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.
Not a requirement, but you could just do this:

```go
createdBy, ok := c.api.auth.GetAuthTag().(names.UserTag)
if !ok {
    //...
}

```