Merge of WIP MP4 (ISO BMFF) time-seek logic from cbl_cpratt/mp4-time-seek

This change incorporates a MP4 (ISO BMFF) object representation model
 (class IsoBox and subclasses), extended Input/OutputStreams (IsoInputStream,
 IsoOutputStream, and BufferGeneratingOutputStream) that enables enumeration,
 modification, insertion, and reserialization of MP4 file streams. The model
 is designed for low memory usage and low runtime overhead to support
 fast MP4 object mutations.

The primary (high-level) mutation is IsoFileContainerBox.trim_to_time_range().
 This method will make all the necessary modifications to the MP4 object
 representation to remove references to media samples outside the given
 time range on the source object in a way that (a) allows for stand-alone/
 context-free consumption of the MP4, (b) uses a section of the mdat data
 from the source content verbatim (a proper subrange). This allows the bulk
 of the data in the resulting MP4 serialization to be taken directly from
 the source representation/file.

Much of the logic to support this high-level mutation are distributed
 across the objects representing the various subboxes of the MP4.

For the most part, only boxes which are required for this mutation are
 currently supported/implemented. All other boxes are represented by
 IsoGenericBox objects (including mdat/MovieData boxes).

The current list of IsoBoxes implemented:

 IsoBox
 IsoFullBox
 IsoContainerBox
 IsoFileContainerBox
 IsoGenericBox
 IsoFileTypeBox
 IsoMovieBox
 IsoMovieHeaderBox
 IsoTrackBox
 IsoTrackHeaderBox
 IsoMediaBox
 IsoMediaHeaderBox
 IsoHandlerBox
 IsoMediaInformationBox
 IsoVideoMediaHeaderBox
 IsoSoundMediaHeaderBox
 IsoSampleTableBox
 IsoTimeToSampleBox
 IsoSyncSampleBox
 IsoSampleToChunkBox
 IsoSampleSizeBox
 IsoChunkOffsetBox
 IsoEditBox
 IsoEditListBox
 IsoDataInformationBox

All of the IsoBox classes are contained in odid-mp4-parser.vala for brevity.

The ODIDMediaEngine now utilizes the IsoFileContainerBox (and sub-boxes)
 to extract duration information for MediaResource publication and for
 generating a MP4 at run-time in response to time-seek requests.

Note that only non-segmented MP4 files are currently supported. Segmented
 MP4 support is forthcoming.

Support was tested with DLNA reference content B-AVC_MP4_MP_SD-03.MP4,
 bbb_avc-main_720x576i50_2M_heaac51_48kHz_160kbps.mp4, O-AVCMP4_BC15A-02.MP4,
 as well as other misc MP4 files with a variety of time range values and
 with various download speeds (to test the pause/resume functionality in
 BufferGeneratingOutputStream).