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
Since we've versioned the whole thing, I think we should save 4 bytes and just write the crc32 (its only a long because of checksum interface in java). You just have to take care to not mess up with sign bit:

    out.writeInt((int)checksum64);
    ...
    checksum64 = in.readInt() & 0xFFFFFFFFL;