liblzma: Add lzma_memcmplen() for fast memory comparison.

This commit just adds the function. Its uses will be in
separate commits.

This hasn't been tested much yet and it's perhaps a bit early
to commit it but if there are bugs they should get found quite
quickly.

Thanks to Jun I Jin from Intel for help and for pointing out
that string comparison needs to be optimized in liblzma.
liblzma: Use lzma_memcmplen() in the match finders.

This doesn't change the match finder output.
Update THANKS.
liblzma: Use lzma_memcmplen() in fast mode of LZMA.
liblzma: Simplify LZMA fast mode code by using memcmp().
liblzma: Use lzma_memcmplen() in normal mode of LZMA.

Two locations were not changed yet because the simplest change
assumes that the initial "len" may be greater than "limit".
liblzma: SHA-256: Do the byteswapping without a temporary buffer.
liblzma: SHA-256: Unroll a little more.

This way a branch isn't needed for each operation
to choose between blk0 and blk2, and still the code
doesn't grow as much as it would with full unrolling.
liblzma: SHA-256: Remove the GCC #pragma that became unneeded.

The unrolling in the previous commit should avoid the
situation where a compiler may think that an uninitialized
variable might be accessed.
liblzma: SHA-256: Optimize the way rotations are done.

This looks weird because the rotations become sequential,
but it helps quite a bit on both 32-bit and 64-bit x86:

  - It requires fewer instructions on two-operand
    instruction sets like x86.

  - It requires one register less which matters especially
    on 32-bit x86.

I hope this doesn't hurt other archs.

I didn't invent this idea myself, but I don't remember where
I saw it first.
liblzma: SHA-256: Optimize the Maj macro slightly.

The Maj macro is used where multiple things are added
together, so making Maj a sum of two expressions allows
some extra freedom for the compiler to schedule the
instructions.

I learned this trick from
<http://www.hackersdelight.org/corres.txt>.
Update THANKS.
liblzma: Use lzma_memcmplen() in the BT3 match finder.

I had missed this when writing the commit
5db75054e900fa06ef5ade5f2c21dffdd5d16141.

Thanks to Jun I Jin.
liblzma: Add support for lzma_block.ignore_check.

Note that this slightly changes how lzma_block_header_decode()
has been documented. Earlier it said that the .version is set
to the lowest required value, but now it says that the .version
field is kept unchanged if possible. In practice this doesn't
affect any old code, because before this commit the only
possible .version was 0.
liblzma: Add support for LZMA_IGNORE_CHECK.
xz: Add --ignore-check.