Catch many KeyboardInterrupts in utilities.

This is wrapped around a lot of long-running sections so that things
like partially-encoded files are cleaned up before exiting.

It's not wrapped around *everything*, though; it's still possible to
trigger the stack trace with good timing.  Not sure if this is worth
fixing.
Make track2cd/dvda2track more interrupt-tolerant.
Fix typo in player module's shebang sequence.
Add .seekable() method to AudioFile objects.

This makes it easier to determine if the file's PCMReader will
do something useful when seeking or not.
Convert tracksplit to use new .seekable() interface.

If the input file isn't seekable, it caches all its data to a temporary
file on disk before running the split across multiple subprocesses.
Convert trackcmp to use new .seekable() method.

When comparing a non-seekable CD image to a bunch of tracks,
it caches the PCM data to a temporary file so they can be
processed across multiple jobs.
Flag M4A audio as seekable.

Since it's dumped to a temporary .wav file, it becomes seekable by default.