matroska: store segment/edition uids in a single structure

To support edition references in matroska chapters, editions need to be
remembered for each chapter and source. To facilitate easier management
of these now-paired uids, a single structure is used.
matroska: parse the requested edition for the segment reference
matroska: set the edition uid when reading a chapter reference
matroska: select the edition using the requested edition uid
matroska: refactor ordered chapter timeline building

This will need to be recursive to support chapters referencing ordered
editions in other files.
matroska: recursively search for referenced segments

When playing a Matroska file with ordered chapters, it may reference
another file by edition uid. When this edition is also ordered, it may
reference other files. When this occurs, the new segment/edition pair is
added to the list of sources to search for.
matroska: support chapter references to ordered editions

Since ordered editions can reference external files, when an ordered
chapter references another ordered edition, we have to go and figure out
what is is referencing as well.
matroska: avoid requesting the same source multiple times
matroska: use memmove when collapsing the source list down
matroska: modify chapter limits by join_diff

When adding or removing frames to avoid 1-frame seeks on chapter
boundaries, the end of the chapter needs to be pushed or pulled by the
same amount to keep the intended end frame the same.
matroska: account for missing information from short sources

If a source is shorter than the requested chapter length, account for
the time missing.
matroska: only error if at least a millisecond is missing
matroska: log about where missing time comes from
matroska: don't add time for chapters without a source
Merge Matroska ordered chapter changes

This adds support for ChapterSegmentEditionUID (pull request #258),
and also fixes issue #278 (pull request #292).

In fact, this is a straight merge of pr/292, which also contains pr/258.