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.
This test shouldn't be possible as a client test, as the client should validate before it sends over the wire.

However we should have an apiserver test, that tests the server side Client object explicitly, and that can pass all sorts of invalid rubbish through as a string.