added admins to seed
Fix race condition for logging user response by disabling config.threadsafe!
Add logging and displaying of user's answer justification
reselect question choice, template
Initial support for users disconnecting in middle of task.

The implementation uses a heartbeat event where other users in a group
are responsible for monitoring each other and reporting if one goes
missing for too long (currently 14 seconds). The user is removed from
the task group for the remaining users, and in future steps their
choices will not be shown, and their vote will not be required to
continue. It does not currently affect the current step or group
formation stage.
Improve support for learners disconnecting during task

Now it is possible for learners to disconnect in the middle of any page,
and other learners in their group will be immediately notified (as soon
as the websocket connection closes). They will be able to vote to continue
without the missing user, or will proceed immediately if that user was the
only missing vote. On the chatroom page, they will see a message informing
them that the user has disconnected. If the user disconnects between pages,
the heartbeat timer from the previous check-in is still used to handle that
case.

There is still not support for learners disconnecting prior to group
formation (this will work, learners in the next stage will detect them
dropping out before group formation, but will result in groups smaller
than the ideal size). This is the next disconnection work item.

This proved to be more time-consuming than expected primarily because the
websocket server is silently swallowing any and all exceptions, and simply
terminating all sockets on the channel with a "non-clean" close event as a
result. I didn't expect this and so was looking for workarounds for these
socket closes, which proved to be unnecessary once the exceptions were fixed.
Fix test I broke by changing semantics of extract_text
Fixes to disconnection logic for multiple disconnections, also add full unhandled exception logging to console in websocket server
Small update to consent form to display form always (for review) and to add accept/reject links at top
Another minor update to consent form to avoid link with already-completed message
Add edX user username prefix (simplifies data cleaning later)
Add rack-p3p gem to try to cope with IE iframe problem on Heroku/edX
Instant disconnect message on close event is broken on IE and Chrome - websocket receives that event during navigation on those browsers - rely on heartbeat instead
Add welcome message to chat, change group formation to create larger groups if possible for maximum interaction for this run
Update activity IDs for quiz 2, fix bug where they're not being used correctly in showChat
Check in log to diagnose why starts_every is not updating
Add seconds_to_next_group_formation, returns seconds until next group formation

This is needed since the existing handler does not work if a WaitingRoom object
does not currently exist, and additionally because we need to know the offset based
on the *server* time, which it doesn't give us. Needed for global notification.
Fix a test I broke by making groups as large as possible (comment out a couple subtests)
Fix seconds_to_next_group_formation to use jsonp for cross-domain access
Add global notification script