Implemented bitstream abstraction layer

BitStreamUtil must be used to create bitstreams. It'll choose an appropriate implementation for you.

Available implementations:
 * The good old BitArrayStream
 * ManagedBitStream: A new and hopefully faster implementation
 * DebugBitStream: Verifies that two given bitstreams provide identical output
Nobody needs this anyways
Less code duplication
ReadSignedInt can be implemented more efficiently

saves 2/4 shifts
Improved assertions
Bitstreams are now disposable.
More assert debug information
Introducing the UnsafeBitStream.

100% speed. 100% yolo.

It works right now, but it's still disabled by default in release builds.
TODO @moritzuehling: add some range/overflow checks and then maybe enable it?
Merge pull request #3 from moritzuehling/master

Merging some improvments back to master.
Fixed two doc comments
Merge pull request #4 from moritzuehling/fast-bitstreams

Fast bitstreams