Add faster silence-generating PCMReaders.

This is mostly to speed up the unit tests a little.
Add PLY-based cuesheet parsing.

Implement Cuesheet objects as an implementation of the Sheet interface.

This is much less ad-hoc than the previous approach and probably
closer to the specification, such as it is.
Fix some of the cuesheet token rules for better accuracy.
Add PLY-based TOC file parsing.

Implement TOCFile objects as an implementation of the Sheet interface.

As with Cuesheets, this is much less ad-hoc and error-prone.
Internalize David M. Beazley's PLY Python module.

This keeps users from having to install it seperately.

Unlike Urwid, which is larger and whose features can be made optional,
PLY's parsing functionality necessary for cuesheets and TOC files
is more critical and not something I'd want to leave out.
Preliminary rebuild of Sheet interface.

Though similar to the old interface, this has more fields to expose
additional information from the underlying implementations.
Convert Cuesheet to new Sheet interface and add basic unit tests.
Update TOCFile to new Sheet interface.
Convert FLAC's cuesheets to new Sheet interface.
Add .pre_gap(), .track_offset() and .track_length() methods to Sheet.

These will be useful for generating split points in files
or for determining how much padding to add when concatenating.
Update trackcat and trackverify to handle pre-gaps correctly.

Pre-gaps at the start of the disc are omitted during splitting
and then re-added by trackcat if a cuesheet is given.
Add unit tests for tracksplit/trackcat pre-gap handling.
Update track2cd, trackverify for new Sheet interface.
Fix some unit tests to match new Sheet interface.