[STORE]: Make use of Lucene build-in checksums

Since Lucene version 4.8 each file has a checksum written as it's
footer. We used to calculate the checksums for all files transparently
on the filesystem layer (Directory / Store) which is now not necessary
anymore. This commit makes use of the new checksums in a backwards
compatible way such that files written with the old checksum mechanism
are still compared against the corresponding Alder32 checksum while
newer files are compared against the Lucene build in CRC32 checksum.

Since now every written file is checksummed by default this commit
also verifies the checksum for files during recovery and restore if
applicable.

Closes #5924

Note: This PR still has a bunch of nocommits and I need to crank up some more bwcompat tests but I wanted to get the word out... all tests pass
the close method is tricky here since we call close if another exception happens that is entirely unrelated and we might cause a new exception that is actually wrong and misleading.

I have a method called `verify` [here](https://github.com/elasticsearch/elasticsearch/pull/6548/files#diff-cdc68fb92150d348c209021260e9c50dR251) that is used in the places where we actually do calculate the checksums to catch that