HTML validation fixes

Correcting HTML errors to try to get IE out of quirks mode.
Merge branch 'content' of github.com:drewww/unhangout into content
Fix remaining index page validation errors
Fixes for IE9+10, warning for <10
Sanitize user models when transmitting to clients
Auto-expire HoA's, use session/trash paradigm

Allow HoA sessions to auto-expire their hangout URL in the same way that
regular sessions do.  Add a "trash" button similar to the one used on
regular sessions.
Forbid event shortName's which could shadow IDs

Since we accept either event/<id> or event/<shortName> as a valid URL
for an event, ensure that <shortName> doesn't consist of the same
character pattern as <id> -- namely, a string of numbers.
Performance hardening for production

 - Add node-toobusy.  Configure to send 503's to non-superusers for any
   page load when the server gets too busy, to prevent lockup.
 - Sockets are trickier, as we presume continuity of state and can't
   just drop messages with the same impunity.  As a compromise, refuse
   to broadcast chat from non-admins and all blur/focus messages from
   any user when the server is too busy.  Add UI to inform users that
   their messages are not going through.
 - Remove requirejsMiddleware from express.  Production environments
   should now call ``bin/compile-assets.js`` to do asset compilation
   on any code change.  Attach that script to the ``postinstall``
   handler in package.json so that assets are compiled with any
   invocation of ``npm install``.
 - Add ``node-memwatch`` configuration, but since the most useful
   feature (heap diffs) has negative performance implications, only use
   it when environment variable NODE_DEBUG_LEAKS === "1".
 - Remove unnecessary logging.
 - Remove no-longer-used CORS middleware.
Performance hardening for production

 - Add node-toobusy.  Configure to send 503's to non-superusers for any
   page load when the server gets too busy, to prevent lockup.
 - Sockets are trickier, as we presume continuity of state and can't
   just drop messages with the same impunity.  As a compromise, refuse
   to broadcast chat from non-admins and all blur/focus messages from
   any user when the server is too busy.  Add UI to inform users that
   their messages are not going through.
 - Remove requirejsMiddleware from express.  Production environments
   should now call ``bin/compile-assets.js`` to do asset compilation
   on any code change.  Attach that script to the ``postinstall``
   handler in package.json so that assets are compiled with any
   invocation of ``npm install``.
 - Add ``node-memwatch`` configuration, but since the most useful
   feature (heap diffs) has negative performance implications, only use
   it when environment variable NODE_DEBUG_LEAKS === "1".
 - Remove unnecessary logging.
 - Remove no-longer-used CORS middleware.
Travis copy conf before npm install
Merge branch 'memleaks' of github.com:drewww/unhangout into memleaks
Fix event-static script path, un-sudo forever's

Don't prepend forever scripts with `sudo`, because we might want to run
them in production as different users (e.g. www-data).
Allow overriding baseUrl; skip stylus in prod.
Put forever logs in logs dir
Upgrade sockjs to 0.3.8
Fix toobusy for whitelisted routes; fix tests

Missing 'return' statement resultled in routes whitelisted from toobusy
blocking not returning properly.

Fix asset-compilation tests to use promise style, and fix timing issues
in admin-users that cropped up with FF28.
Import nib in offline stylus compiler
Remove blur/focus feature

Recent changes to event editing removed the ability to change
"blurEnabled" for events, which bit us hard in a large-scale event.
Additionally, the $(window).blur strategy for detecting blur didn't
properly handle interactions with the youtube video, leading it to have
less utility.

We may consider re-adding it in the future but for now have decided to
remove it, and the concommitant feature for flashing the window title on
new chat messages.
Remove video group scrub control, fix perms

Remove the logic that would attempt to infer when an admin had
intentionally scrubbed a video in time, due to its fickleness.  Instead,
admins must manually "Pause for all", then scrub the time slider, then
"Play for all" if they wish to scrub time.

Fix handling of permissions for sending group control. Event page video
embed was allowing unprivileged users to send control messages (which
were being dropped by the server; but are nevertheless unnecessary
traffic).
Don't toggle intend-to-sync if the video is ending

If we get a 'pause' signal early because the video is ending and we're
playing a couple seconds ahead of the sync signal, don't toggle
intend-to-sync.