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.
Please add a test for an invalid user tag too.

Options:
  not a user tag
  not a valid tag
  not a valid user tag