Added HTTPTimeSeekResponse constructor that allows for specific response length

Since MP4 time-seeks responses can have a byte-range value that does not
 represent the entire response body (due to time-seek-specific ISO/MP4
 "wrapping" of the content), the with_length() constructor is added.

Also renamed the "range_length" memvar to "response_length" to more clearly
 separate the two concepts.

Tested with ODIDMediaEngine MP4 container generation logic (separate
 commit)
Implemented/integrated MP4/ISO time-seek response generation logic for ODIDMediaEngine

The ODIDDataSource now supports MP4/ISO time-seek response generation.

 preroll() will now call preroll_mp4_time_seek() for resources with a profile
  that implies a MP4/ISO container. This method will construct the
  IsoFileContainerBox representation, call trim_to_time_range() to make
  the necessary time-seek modifications to the representation, and produce
  a TimeSeekResponse that represents the response.

 start() will now call start_mp4_container_source() when a IsoFileContainerBox
  is set on the DataSource (via preroll_mp4_time_seek()). This method will
  setup a BufferGeneratingOutputStream() for the IsoFileContainerBox
  representation and start a thread to serialize the representation to the
  OutputStream.

 Since there are now two ways for the ODIDDataSource to generate data - via
  an IOChannel or a BufferGeneratingOutputSource - had to change various
  methods on the ODIDDataSource to recognize which form was in-use:
  preroll(), start(), stop(), freeze(), and thaw().

 Added debug() logging to the public DataSource methods.

Made some changes/fixes to the BufferGeneratingOutputStream.

 Changed the "start()" method to "resume()" and added a "paused"
 constructor parameter to indicate what state the BGOS should start in.
 This makes the semantics more straight-forward.

 The BufferReady delegate passes a Bytes now. This allows the buffer to
 be better managed with automatic object references.

 Renamed "gen_buffers" to "paused" and reversed the logic everywhere.
 Also renamed the write_cond condition variable to "unpaused". This makes
 the logic much easier to follow.

 All of the methods that use a lock now utilize try/finally for the mutex
 block. This should ensure the unlock() will be called for all cases.

 Added various condition re-checks after waiting for the unpaused
 condition.

 Changed all delegate invocations to be made without holding the
 state_mutex.

The odid-mp4-parser test program now takes a "-bufoutstream" parameter
 with an optional buffer size.

ODIDUtil now has a resource_has_mp4_container(MediaResource) method.
 This returns true if the MediaResource profile implies an MP4/ISO
 container.

Ran tests with various tests with the MP4 test program and curl with
 various TimeSeekRange values and non-segmented MP4 source content.
 Verified returned content binary was playable and represented the
 requested time range for the non-segmented DLNA reference content.

Ran low-speed transfer tests and verified the freeze()/thaw()/stop()
 logic on the ODIDDataSource with the MP4 time-seek container operates
 as expected. Flushed out some bugs. No known issues remaining.