Ported to websockets

This now uses websockets instead of polling for communications between
all instances. This means that there should be no more funky business
between the presenter window and the remote. Simply advance a slide and
watch every following client track right along. It's like magic!

This should also drasitically reduce the load, perhaps making it useful
for large scale presentations. We'll have to see on that one.

The lightweight messaging bus this implements can be used to send
messages of other types. We'll see what sort of interactivity features
we can get nailed in here.
Use a session cookie to authorize the presenter

Websockets don't use the same auth standards so basic auth won't work.
Instead, we just set a session cookie when the presenter loads up the
presenter view. This is just a quick check to make sure nobody's fooling
with us; it's not intended to be terribly secure.
Merge pull request #97 from binford2k/features/websocket

Ported to websockets