Add translog checksums

Switches TranslogStreams to check a header in the file to determine the
translog format, delegating to the version-specific stream.

Version 1 of the translog format writes a `0xffff_ffff_0000_0001` header
at the beginning of the file and appends a checksum for each translog
operation written.

Also refactors much of the translog operations, such as merging
.hasNext() and .next() in FsChannelSnapshot

Relates to #6554
each invocation of CRC32 is pretty slow: if we do it byte-by-byte its a native call, and we cant use vectorized bulk processing. can you try:

    import org.apache.lucene.store.BufferedChecksum;
    ...
    private final Checksum checksum = new BufferedChecksum(new CRC32());

This should improve performance significantly.