make lrcompress api more generally useful

Decompression => object, not one-shot function
Reset to reuse (de)compressors
EndBlock to emit end-of-block distinct from Flush()
compressor.Close() exists and ends block
Choose your checksum (don't have to use xxhash)
Decompressor can read one block or 'til EOF or empty block
Load to load dictionary content