MSE: Buffer media by PTS when kMseBufferByPts feature is enabled

Other than mechanical* DTS/PTS pieces, this CL contains the bulk of the PTS/DTS compliance work:
1) SBS<SBRByPts> and SBRByPts order buffers within GOP by DTS, between GOP by PTS.
   See especially SBRByPts::GetBufferIndexAt(...) and ::CanAppendBuffersToEnd(...)
2) SBS now has highest_timestamp_in_append_sequence_ and
   highest_buffered_end_time_in_append_sequence_, along with updated PrepareRangesForNextAppend(),
   to correctly *not* remove self-overlapping out-of-order buffers in a sequence of appends within
   the same coded frame group when buffering ByPts. Similarly, usage of and implementation of GC
   helper FreeBuffersAfterLastAppended() consults these to not unduly evict pieces of an
   out-of-order GOP that is before media_time.
3) SBS now has highest_output_buffer_timestamp_ to help prevent some undue stalling in cases
   like track buffer exhaustion with out-of-order track buffers when buffering ByPts.
4) FP signals SBS of coded frame group starts, including PTS information. SBS decides which to use
   based on ByDts vs ByPts. Also, FP handles re-signalling CFG start time if the start has moved
   earlier across tracks in a muxed SourceBuffer (similar to existing logic for DTS and muxed
   sequence mode). SAP-Type-2 is not explicitly rejected; related FP*OOO* unit tests demonstrate
   current buffering results ByDts vs ByPts for one simple SAP-Type-2 scenario.

Many related unit tests are updated. Notably, SBSTests already had out-of-order buffering
in many of its cases.

* Much of the mechanical stuff is to make SBRBy{Pts,Dts} use the intended time type internally,
  while letting SBS get away with using DTS still in many places where eventually it'll use PTS
  when SBRByDts gets dropped. See the set of new templated SBS::Range*(...) adapter methods.

BUG=718641,769434,402502,398130

Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Ib2abb816d240a6f74362bb83061ac4157dab210b
Reviewed-on: https://chromium-review.googlesource.com/678443
Reviewed-by: Chrome Cunningham <chcunningham@chromium.org>
Commit-Queue: Matthew Wolenetz <wolenetz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506161}
15 files changed