TCP Protocol v2

Some tweaks to Courage.js to support TCP Protocol v2.

- Strings map to Blobs under the hood
- `MessageBuffer` now works with an `ArrayBuffer` as its base instead of `Uint8Array`
  - Enabled better semantics when writing the Uint16 for a Blob
  - Also refactored the `write*` methods.
- Replay is now a client global: `subscribeOptions`

ReplayOnly is not supported, and won't be until there's a use case. :lipstick: 

@mplewis and @JoeSelvik, I'm just going to merge this. I'd appreciate a post-review, but you obviously don't have to. :wink: This is compatible with [thenewtricks/courage-web-demo](https://github.com/thenewtricks/courage-web-demo).
It is silly. ;) I got it from Sentry. Blah blah code size vs readability blah blah.

Basically, it's quirky and I like it now. ;)