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.