Update BitstreamHeader mark handling (again)

Positions are now stored externally with an interface similar
to fgetpos/fsetpos.  Seems a bit more intuitive and positions
can be deallocated independently from the readers.
Convert BitstreamWriter to getpos/setpos interface also

It's best to keep them consistent.
Conver BitstreamRecorder to use its own specialized buffer

Seperating the current position from the furthest position
allows it to handle getpos/setpos properly, like any other
BitstreamWriter.

Yank out a bunch of unnecessary stuff from buffer.h now
that it's a lot less overloaded.
Fix regression with bitstream position objects

Making them instantiate-able fixes a lot of things.
Add support for CDTOC tag as cuesheet alternative