Analytics: Try not to die if we got a start but no listens

* Add analytics config to testing
WIP on Transcoding Support

* Add TranscodingSource
* Add Stream Group concept to Master
* SourceIn: Add support for recognizing stream group source attempt
* Parsers: Add `end` event support
* Parsers: Add `duration` to headers
* Sources/Base: Move chunk logic into FrameChunker
Transcoding: Use timestamp of initial chunk, then compute future times

* Instead of using the timestamps of the chunks we read in from the group
  source, use only the first timestamp and then use chunk duration to
  compute from there.  Saves us from issues if our newly-encoded chunks
  aren't exactly the same duration as the inputs
* Sources/Base FrameChunker: Accept an `initialTime` in the constructor