Implemented SyncService

This it basically an implementation of the Ping Channel from previous versions of the client, and should should help with #12.

The server already has support added in master.
Eventually, it'd probably be preferable to make 2 changes to this, in order to prevent stacking up a bunch of outstanding pings and/or errors if we get disconnected:
- use `setTimeout()` instead of `setInterval()`, and don't call `setTimeout()` until we get a ping response
- add a `#running` flag that's set by `#start()` and `#stop()`, and checked by `#_ping()` and `#start()` (to prevent starting multiple timers concurrently)

For now, though, this should be more than sufficient for what we need.