User-initiated sharing draft in JupyterHub

We now have a complete proposed implementation of user-initiated sharing for JupyterHub 5. With this, users can grant each other limited access to their servers, either by name or creating an invite code which can be exchanged for permission.

Sharing is not enabled by default, so there is no change for existing deployments.

This took a lot longer than I wanted it to, but I think it’s complete and ready for testing/review.

Highlights to check out: