Add FileReader.Checksum

The FileReader.Checksum method provides access to HDFS's built in checksum
ability, which works by checksumming concatenated checksums which are already
stored alongside the data.

This also adds a datanodeFailover type, to abstract over handling datanode
failure in multiple contexts (reading the checksum is the second such context;
reading blocks was the original one, and writing blocks will eventually be
similar).