WIP on rebuilding analytics pipeline

* Record segment listens instead of full requests
* Rip out minute logging, since it will be replaced by the segment listens
* Rip out CubeLogger
* Initial implementation for session id on HTTP Live Streaming
* Track sent bytes in Rewinder rather than by looking at the socket
Split client creation out to a base output class

* `BaseOutput` is responsible for creating `@client` and populating
  ua (user agent), ip, path, user_id and session_id
Add `startSession` to StreamGroup

* Log all analytics under the `interaction` level
* Add `startSession` function to StreamGroup. Returns a session uuid and logs
  a `session_start` interaction
* Use `listen` interaction type for session segments
Add `startSession` to stream; Add duration to pump

* Add `startSession` on Stream, with same implementation as StreamGroup
* Add `duration` property to concatanated pump buffers
Optimize HLS stream index by memoizing index records per segment
HLS Segmenter: Sort buffer chunks in segment

* Fix a bug where buffers in the segment at the intersection between the rewind
  buffer and live source data are scrambled at restart