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
Seems odd to make a request every time we want to look at roles, which are
pretty static? I'm sure we can just move the "don't return users unless
it's asked for" bit into the findAll for roles


On Wed, Jul 30, 2014 at 3:13 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');
>
> api/roles?permissions=assign does already return exactly the right things
> for the currently logged in user. This should always use the response from
> the API rather than loading roles out of the store IMO
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/TryGhost/Ghost/pull/3436/files#r15612692>.
>