Fixed a bunch of bugs and glued everything together.

Challenges are now able to occur between multiple participants and incorporate
the canvas show through web socket server. Things like starting new challenges
and declining challenges work much better.

Things that still don't work well are registering a display manager after things
have kicked off and the handling sockets croaking (e.g. a user CTRL-C's their
session). Pretty much when anything unexpected happens, things go a little
crazy.