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.
Here I think we should be dealing with:

```go
func (c *Client) ShareEnvironment(users []names.UserTag) (result params.ErrorResults, err error)
```

And create the params.ModifyEnvironUsers structure inside this method.