Initial check in of web socket connection. At the moment it only connects successfully if a small edit is made in the websocket library.
Finished basic happy path for websocket connection
WebsocketConnection now supplies the correct version when it connects to Pusher. It reads the version from the MANIFEST.MF file in the jar, which will be populated with the version by Maven at build time.
Can now subscribe to public channels
Removing Java-WebSocket submodule. Will replace with a submodule pointing to a forked version of the library which reverts a bug fix inteded for Android which is preventing the library from working in core Java programs.
Adding forked version of the websocket library as a submodule. Created it as a subdirectory of new top level directory submodules because there is a bug in git to do with adding a new submodule in the same location as a submodule previously existed (see http://jondavidjohn.com/blog/2012/10/replacing-a-submodule)
Fixed a number of problems with the pom file:

* used the build-helper plugin to add the Java-WebSocket library as a
* source directory
* specified UTF-8 to remove warnings
* removed a couple of unnecessary groupId declarations for plugins (the
* default is correct)
* temporarily commented out the coverage plugin until I can get the
* excludes working, currently it won't exclude the websocket library
Submodule seems to have got a bit screwed up, going to re-add it
Adding the websocket library submodule again
Added developer instructions to the readme
Added an example application and removed system outs from the library - need to be replaced with a logger
ChannelEventListener#onEvent now includes the channel name, which will be needed if one listener is listening to events on multiple channels
The Maven build now produces an executable jar which runs the Example application. Added a section to the readme about how to build and run the jar.
Unsubscribing from public channels is now implemented
Refactor. The WebSocketConnection class was becoming a monolith because it was dealing with connection logic and also distributing events to channels. Introduced a new class ChannelManager which handles this logic so that the connection can just send string messages without needing to know what they are. Also added a new method onError() to the connection event listener.
Can now unbind from events.
Cleaned up the connect method to make it consistent with the subscribe method. There is no more setConnectionEventListener(), only bind(). You can choose to call Pusher.connect() with a listener and an optional list of states you want to listen to, in much the same way as you can call Pusher.subscribe() with a listener and optional list of events to listen to. Also added a bit of Javadoc to the Pusher class that explains what is going on, e.g if you call Pusher.connect() with a listener and no specific states your listener will be bound to all states.
Example: fixed a couple of minor issues - using wrong command line argument for the event name and order of methods
Just a couple of renames:

* WebsocketConnection becomes WebSocketConnection, to make the casing consistent.
* PublicChannel (which implements Channel) becomes ChannelImpl. This is to
facilitate a consistent naming scheme where PrivateChannelImpl will
implement PrivateChannel and PresenceChannelImpl will implement
PresenceChannel.

Plus renames of the associated unit test classes.
Added some Javadoc for public interfaces.