Add support for uncompressed or externally (de)compressed NBT streams

The existing NBTInputStream and NBTOutputStream implicitly compress and decompress the stream with GZip. This breaks where other compression is used externally, for example DEFLATE compression in Minecraft region files (my use case).

This adds documentation to the methods saying that compression is used (would've saved me hours to see that) and an alternative constructor where whether or not to compress can be passed as an option. The existing constructor retains the original behaviour so as not to break any existing applications.