Sockjs refactor

Core code is all largely unchanged, but restructured to try and make it more testable.

* separated core code into XivelyClient and SocketTransport, and made them instantiable (so in tests we can create a new instance for each spec run)
* Expose same public api as previously, with a `xively` object available in the root scope on the page (however `Xively` will also now work).
* Fleshed out tests
* Added code coverage grunt plugin (currently not brilliant but will fail if new code is added that drops current coverage level)
* Bumped version to 1.0.4