Initial commit.

This supports only decompression in streamed mode using
LZMA2 and Delta filters. The integrity checks None,
CRC32, CRC64, and SHA-256 are supported.
Clarify the message in MemoryLimitException.
Fix real-clean -> distclean in GNUmakefile.
Improve the API docs.

Thanks to Arunesh Mathur.
Remove an unneeded test for null.
Use -Xlint on the javac command line.
Extend all XZ-specific IOExceptions from XZIOException.
Bump serialVersionUID of the exception classes.

No one cares in practice for now but I'll bump
them anyway since I changed the classes in the
previous commit.
XZDecDemo: Fix reading and writing to the buffer.

Thanks to Benoit Nadeau for the original patch.
Add THANKS.
Fix wrong variable name in IndexHash.

It could accept invalid files since the sum of
uncompressed sizes of the Blocks wasn't validated
properly.
Refactor IndexHash.
Fix handling of uncompressed chunks in the LZ decoder.

It sometimes incorrectly considered the data to be corrupt.
Move filter IDs in more logical place in raw coders.
Refactor the locations of internal classes and remove RawDecoder.

The functionality of RawDecoder is now integrated
into BlockInputStream.
Fix a file descriptor leak in XZDecDemo.
Validate the Compressed Size field properly in BlockInputStream.
Add .xz container encoder support.

There is also a dummy LZMA2 encoder which creates valid
output but doesn't compress.
Add a comment.
Add a missing newline.