Implemented time range end trimming

Implemented IsoSampleTableBox.remove_sample_refs_after_point(). This uses
 newly-implemented IsoTimeToSampleBox/IsoSyncSampleBox/IsoSampleToChunkBox
 /IsoSampleSizeBox.remove_sample_refs_after() methods and
 IsoChunkOffsetBox.remove_chunk_refs_after() to trim the specified samples/
 chunks off the SampleTableBox sub-boxes.

IsoSampleTableBox.access_point_sample_for_byte_offset() now takes a
 Proximity parameter to indicate whether the function should return the
 sample number immediately preceding the given offset or immediately
 following.

IsoFileContainerBox.trim_to_time_range() now trims the samples after the
 range end off the mp4 before removing the preceding samples. This is more
 efficient (less table shifting) and removing the end doesn't change the
 sample calculations for the range start.

Tested with a variety of time values for O-AVCMP4_BC15A-02.MP4. Results
 as expected.