Added handling of all track samples before time range (track removal) and some SampleTableBox refactoring

Fixed a number of the SampleTableBox sub-table's
 remove_sample/chunk_refs_before() methods to handle sample/chunk values
 that are 1 beyond the number of samples (to allow for removal of all
 samples/chunks in a box).

Added a has_samples() method to SampleTableBox and its sub-boxes.
 IsoFileContainerBox.trim_to_time_range() will now remove tracks from the
 MovieBox if/when has_samples() returns false on a track's STB (after
 removing sample references).

Performed some SampleTableBox refactoring in preparation for adding
 remove_sample_refs_after_point().

AccessPoint now has samples_into_chunk and bytes_into_chunk.

Code contained in remove_sample_refs_after_point() is now factored into
 access_point_sample_for_byte_offset() and access_point_chunk_for_sample()
 using the new AccessPoint fields.

Fixed up more logging.

Tested with O-AVCMP4_BC15A-02.MP4 and B-AVC_MP4_MP_SD-03.MP4. All tested
 start times operated as expected.