posix-spawn relies on a C extension. This does work under JRuby, but it
won't work on Travis CI as they disallow JRuby C extensions, as they are
considered to not be a good practice.
Instead we are using either Process.spawn on Ruby 1.9, or the
childprocess gem on Ruby 1.8. childprocess uses native JVM APIs on
JRuby, and fork+exec on others.
Using EventMachine was causing issues when run alongside Thin.
In general running the event loop is quite slow, presumably because it
is mostly spinning idly wasting cycles (unsure). We were mitigating
this by stopping the thread when it wasn't needed, but this is
incorrect when Thin is also running.
Implemented WebSocket server using raw TCP sockets and a WebSocket
parser provided by faye-websocket. This is faster and neater and removes
the need to dick around with threads.
Fixes#6.