Add seeking to low-level BitstreamReader module

Analagous to fseek, this allows seeking to some arbitrary byte
in the stream relative to the start, current position, or end of the stream
by calling fseek or a seek() function as needed.

This is *not* a substitute for the mark stack since the reader's
state and buffer contents are not preserved after a seek.
Convert TrueAudio decoder to use new seek interface

All I/O now uses function-based wrappers.
This is now a requirement since Python 3 jettisons the file-based functions
in the C API, so there's no way to fseek directly.
Update FLAC and WavPack decoders to use new seek interface
Convert Bitstream routines to always be function-based

That is, instead of using the PyFile interface to do I/O,
the bitstreams now always use .read().write() methods on the objects themselves.

This means files and bitstreams can't be intermingled freely like before
and is the sort of change that tends to break a lot of things.
Add file/bitstream intermingling documentation

Add some explicit casts to buf_fseek.  Though it's possible
to widen buffers to cover the full range of memory,
they're really only designed to cover pretty small chunks of data.
Add a lot of explicit byte string markers and remove unicode() calls

I hadn't been doing a lot of unicode/string mixing previously,
but a lot of overhaul is still needed to turn "foo" into b"foo" everywhere
a constant string of bytes is needed.
Optimize ExecProgressQueue for single job operation

That is, when only running a single job at a time,
it foregoes spawning subprocesses and executes the functions inline.
This should make it easier to debug.
Have .from_pcm() classmethods always close PCMReaders when finished

This is mostly to ensure Python file handles always get closed.
But in the near term, it also ensures the last remaining subprocess-based
PCMReaders also have their processes cleaned up properly.
Use subprocess.DEVNULL when available

This avoids opening, and having to close, os.devnull.
Fix a number of tests to work under Python 3
Update generic metadata tests for Python 3 support
Completely overhaul internal ID3v1 internal implementation

Fields are now stored internally as unicode and converted back and forth
between padded ASCII strings as needed.
Update ID3v2 unit tests for Python 3 support
Minor trackverify progress display fix
Fix many tests for WavPack metadata handling
Update TrueAudio metadata tests
Fix a several M4A metadata unit tests
Convert track_name classmethod to always take/return strings

That is, the file_path should be something probably from
sys.argv and what's returned will be sent off to open().
This means it takes plain strings under Python 2 and unicode strings
under Python 3.
Add context manager support to BitstreamReader/BitstreamWriter

That is, performing:

>>> with BitstreamReader(open(file, "rb"), False) as reader:
>>>     <do stuff>

will call reader.close() on exit, which closes the opened stream,
which is probably what one would expect.

BitstreamWriters also flush at __del__-time, so performing:

>>> f = open(file, "wb")
>>> w = BitstreamWriter(f, False)
>>> <do stuff>
>>> f.close()

will generate a warning since the writer will try to flush
a closed stream at garbage-collection time.
Better to call "w.close()" which will perform both the flush and
stream close so that the flush when garbage collected is a no-op.
Update PCMReaders for context manager support

That is, one can perform:

>>> with track.to_pcm() as pcmreader:
>>>     <do stuff>

and be sure the pcmreader's .close() method will be called
once the block ends.  This, in turn, ensure any file handles it
has will be closed also.