Rework parser allocations to be more memory-efficient

* Thanks @miksago for the suggestion
Optimizations for the RewindBuffer dump/restore flow

* Set a default chunk duration of two seconds and use that in BaseSource
* When cloning a stream to create a stream group, only use a minimal
  RewindBuffer of 30 seconds, since only the transcoded buffers are important
* Add `util/icecast_source`, which provides a simple way to stream an audio
  file in as a source