Fill missing reply permissions

Introducing user service.
- Stores persona.
- Handles building/destroying Permissions and Auth plugins (moved from AppController)
- Privacy directive uses it.

Fix #1759
The replies permissions were not filled, only the reading permissions
because privacy directive used to fill the rest. But a change made it not to touch the permissions of an annotation which has the permissions already set.


@tilgovi: I think it is just bad function naming. I mean that `auth.login` does nothing more than wraps the `identity.request` to a promise and resolves or rejects it at the correct point. I do think it is better to wrap them in promises, especially because there is no other way to detect when the Auth plugin's `withToken` call would return (https://github.com/hypothesis/h/blob/e41cfcf6bee5a1dab55aebbafd96c0a33d1236f4/h/static/scripts/services/auth.coffee#L67)

I kinda like the result in the AppController: https://github.com/hypothesis/h/blob/e41cfcf6bee5a1dab55aebbafd96c0a33d1236f4/h/static/scripts/controllers.coffee#L177

Should I just rename `auth.login` to `auth.request`?
And I think they should stay as a public call because this way the AppController doesn't have to touch the identity