Use memory-mapped IO for reading Matroska files

Time to index a 1 GB file.  All numbers best-of-five.

                        Old       New     Change

Windows, 5400 RPM USB 2.0 HDD:
Video Only, Cold:     1:33.117  1:09.264  -25.6%
Audio + Video, Cold:  1:50.105  1:20.715  -26.7%
Video Only, Warm:     0:11.138  0:06.131  -45.0%
Audio + Video, Warm:  0:28.501  0:18.377  -35.5%

OS X, SSD:
Video Only, Cold:     0:07.363  0:08.783  +19.2%
Audio + Video, Cold:  0:10.536  0:11.829  +12.3%
Video Only, Warm:     0:01.119  0:00.904  -19.2%
Audio + Video, Warm:  0:03.171  0:02.771  -12.6%

OS X, HDD:
Video Only, Cold:     0:06.773  0:06.632  -02.1%
Audio + Video, Cold:  0:09.460  0:07.905  -16.4%
Video Only, Warm:     0:01.118  0:00.837  -25.1%
Audio + Video, Warm:  0:05.999  0:02.778  -53.4%
Fix some clang warnings
Improve the compressibility of the index files a bit

While the space occupied on disk is utterly irrelevant, this speeds up
writing the index file a bit (as much as twice as fast for some Matroska
files).
Allow negative linesizes

libavcodec appears to use the convention of negative strides for images
stored bottom-to-top, so don't reject them when verifying that it
actually gave us data.

Closes #102.