Setup IsoTrackRun/IsoTrackFragment/IsoTrackExtends box relationships and logic

Added a variety of accessors & related caching.

Added TrackRunBox/TrackRun duration and size calculation logic & caching
 (which utilizes the conditional default sample duration/size logic).

Added a IsoBox.get_root_container() method since the fragment logic needed
 to navigate back up to the MovieBox.

IsoContainerBox.children_to_string() no longer stringifies all the children
 by default.

Added a loaded check to IsoBox.flags_set(). This should catch a bunch of
 cases where flags are being checked on unloaded boxes. (but added a _loaded
 version for cases where the check is done prior)

Also replaced all uses of Error with IsoBoxError where possible.

Tested with B-AVC_MP4_MP_SD-05.MP4 and checked the duration calculation
 logic.