Begin implementation of TCP Protocol V2

Caveats:

- Does not ACK events.
- Does not obey any subscribe options (assumes replay)

Multiple channel subscriptions and replay were tested. Reconnect timer
retested. All OK.
Persist global subscribeOptions setting
DRY out read processing
Use explicit connection management for APNS
Acknowledge received events
Form socket on initialization (but don't connect)

Simplifies code.
Update README for new connection management API
Support coexisting use of replay + regular connections

All state modifications happen in a queue
Making a new connection kills the old one
A new socket object is created for each new persistent connection
Only persistent connections are restarted
Only delegate callbacks for the current socket are processed
Merge pull request #5 from thenewtricks/tcp-protocol-v2

TCP Protocol v2

Updates for v2 of the Courage TCP protocol:

- Strings are Blobs under the hood
- Enable explicit control over connection state of TCP socket
- Enable replay-only functionality for APNS

Bug Fixes

- Remember subscribe options on reconnection
- Clean up code
- DRY out repetitive end-of-event and end-of-channel processing code
- New Features to Prep for APNS

Explicit connection management

- connect
- disconnect
- replayAndDisconnect

Connection Management

- All state modifications happen in a queue
- Making a new connection via replayAndDisconnect or connect kills the old one and creates a new socket object
- Only delegate callbacks for the current socket are processed
- Only connections for the current socket are restarted