User role dropdown

Closes #3402, Closes #3428

------------------



### Components
- Added `GhostSelectComponent` to handle async select creation (h/t @rwjblue)
- Added `GhostRolesSelector` (extends GhostSelectComponent) for displaying user role options
- Created `StoreInjector` for surgically inserting the store into things that normally wouldn't have them.
- InviteNewUserModal now uses GhostRolesSelector & defaults to Author (per 3428)

### User Model
- Added `role` property as an interface to getting and setting `roles`
- Refactored anything that set `roles` to set `role`
- isAdmin, isAuthor, and isEditor are all keyed off of `role` now

### Tests
- Added functional tests for Settings.Users
- updated settings.users and settings.users.user screens
- fix spacing on screens

### Server Fixtures
- Fixed owner fixture's roles
This isn't necessarily going to the API. If you're logged in as the owner,
then the Owner role is in the store, and so it'll be returned when you do a
`store.find`

Also, I c/p'd that code: is the `permissions: 'assign'` thing just a @todo?


On Wed, Jul 30, 2014 at 2:44 PM, Hannah Wolfe <notifications@github.com>
wrote:

> In core/client/components/gh-role-selector.js:
>
> > @@ -0,0 +1,16 @@
> > +import GhostSelect from 'ghost/components/gh-select';
> > +
> > +var RolesSelector = GhostSelect.extend({
> > +    roles: Ember.computed.alias('options'),
> > +    options: Ember.computed(function () {
> > +        var rolesPromise = this.store.find('role', { permissions: 'assign' })
> > +            .then(function (roles) {
> > +                return roles.rejectBy('name', 'Owner').sortBy('id');
>
> This is unnecessary, the API will return the correct roles :)
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/TryGhost/Ghost/pull/3436/files#r15610896>.
>