[#1002] More Snappy fixes

* Make Snappy.decode stateful instead of relying on the uncompressed length being equal to the compressed length
* Correctly handle copies where offset < length
* Take copies from the output buffer in decoding
* Make the maximum encoded chunk size 32kB for compressed data