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.
I don't think that the error message here is helpful to the user.
Perhaps just have the same annotation as above, "could not share environment"