Fixed a bug with yt embeds.
Merge branch 'master' of github.com:drewww/unhangout
WIP: admins and superusers
Refactor DB loading for deterministic order

Refactor the DB loading for two reasons:
1. The current loading depends on the order of reading keys from an
object, which is problematic, as that ordering is undefined.  If
`sessions` were loaded prior to `events` this would cause problems.  Use
an array rather than object to store loaders.

2. Clarify the heavily nested loading function.  This new implementation
is a bit more verbose, but I hope clearer:

 - use `async.waterfall` to control flow rather than nesting callbacks.
 - use `async.map` and `async.mapSeries` rather than nesting
   `async.parallel(_.map(...))`, etc.
 - use `that = this` as strategy for enclosing `this` rather than
   `_.bind`.  I'm a fan of `_.bind`, but when it gets 3 levels deep, it
   just gets hard to read.
Merge refactor-db-loading
Backend functionality and tests all in place
Merge pull request #231 from drewww/refactor-db-loading

Refactor DB loading for deterministic order
Initial complete implementation of superuser/admin

This is an initial implementation of a distinction between superusers
and admins, with admins being in charge of particular events.  Major
changes:

  - What 'admin' meant in the past now uses the language 'superuser',
    including in conf.json -- so configurations need to be updated.
    UNHANGOUT_ADMIN_EMAILS has changed to UNHANGOUT_SUPERUSER_EMAILS.
    Superusers have permission to every event.
  - A new "Users" tab which is visible only to superusers allows
    granting superuser and admin status for particular users and events.
  - Admins viewing the route `/admin/` will only see the events/sessions
    they are allowed to.

What's missing:

  - The link to `Admin` doesn't show up on the home page for admins --
    it only shows up on pages where there is a `curEvent` parameter set.
    Since admin-ship is a property of Event models, it requires
    enumerating every Event to see if they should see an admin link.
  - There is no way to set the adminship from a the event admin pages.
    Admin-ness is only settable at `/admin/users/`, and only by
    superusers.
  - No selenium tests for `/admin/users/` frontend yet, though the
    backend POSTable plumbing is thoroughly covered.
Merge ytID embed fix
Merge pull request #232 from drewww/superuser-admin

Superuser admin