Refactors.

- Converted the consumer back to a class.
- The caller can now terminate the consumer using stop(). The caller is no longer exposed to events.
- Fixed a race-condition with the connect() callback wanting to do things that can only work after the connection completes. We moved our logic to a new "identify" callback, that gets called after we process the identify response.
- Disabled buffer debug-logging.
- Converted a number of callback spawns to direct calls. Spawns just complicated things during a crash, and there's no reason that these can't be synchronous.
- Reads and writes are now significantly faster. We no longer impose a throttling delay in the connections' read/write loop unless there was no activity.
- Connection objects' loops now set is_connected to False before returning.