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.
The server should never depend on the client.  That is just backwards.  I hope it isn't too tied together yet.