Implementing new socket API methods

Adds:

- Reverse interrogation method (simperium sends an `i`) to the client
- Connection level `log` message

Also adding unit tests to ensure the client adheres to [the protocol](https://gist.github.com/beaucollins/6998802).