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.
To make it very clear to the reader that the UserTag is a valid tag, we should do this:
`UserTag: names.NewUserTag("foobar").String()`