Remove redundant timezone from individual update timestamps.

The time separators make the timezone clear and it's redundant
information on every update.
Use absolute times for timestamps older than a day.

"2 days ago" repeated twenty times isn't super helpful.
Rename border image to blow away caching.
Style visitor count to look more natural in status bar.
Rework permissions for closed events.

Mutating existing content should still be possible after closing an
event, we just don't want new updates to be posted. Instead of checking
for the event state in validators, instead we check event state at
permission generation time and revoke "update" permissions in that case.
Remove redundant body class.

Look again: Your liveupdate event embeds are now styled.
Fix encoding of title in "start a discussion" link.

This fixes a crash when the title includes non-ASCII characters.
Only allow embeds on media_domain.

This prevents leaking of modhashes etc. from logged-in embeds.
WebSocket: Add client-side support for new-style update messages.

Step one of a live migration to a new format for update messages.
Add remove button back to reports listing.
WebSocket: start sending new-style update messages.

These include more metadata rather than just the pre-rendered update.
WebSocket: remove compatibility code for old-style update messages.
Add support for optional desktop notifications of new updates.
websafe_json rendered HTML before sending down websocket.
Revert "websafe_json rendered HTML before sending down websocket."

The websafe_json call is moving up into r2 core.

This reverts commit a43109a01b35db6117a33c20947ef93e47bd199a.
Use scrollupdate and timetext from core.
Fix timetext capitalization and scrollupdater constructor.
Merge pull request #54 from ajacksified/fix-timetext-capitalization-bug

Fix timetext capitalization.
Update timetext elCache when receiving new updates on socket.
Remove libraries now in core from main JS module.