New client & server API func ShareEnvironment

ShareEnvironment shares the current environment with the given user.
Under the hood, it adds an environment user to state.
We shouldn't ever be able to create a username like that in the database.

We never have remote users.