mover: refactor ChecksumMover

ChecksumMover is an interface that a checksum may choose to implement 
to allow the mover to interact with the pool's checksum calculation 
and to (optionally) provide a client-supplied checksum value.

There are a few potential problems with the current interface.  Beyond 
the lack of documentation and the confusing names (setDigest) for some 
methods, the getChecksumFactory is potentially called under two 
circumstances: when supplying the on-transfer ChecksumFactory and 
supplying the on-write ChecksumFactory.  A mover may wish to 
distinguish between these two cases, which is currently only possible 
by knowing that the two cases happen either side of the runIO call.

Also, a mover may wish to know whether on-transfer checksum 
calculation is enabled and whether the on-write checksum calculation 
is enabled.  The on-transfer calculation may be inferred from a call 
to getOnTransferChecksumFactory and setOnTransferChecksumFactory.

This patch fixes these issues.  It renames setDigest to 
setOnTransferChecksumFactory.  The getChecksumFactory is split into 
two methods, getOnTransferChecksumFactory and 
getOnWriteChecksumFactory.  The setOnWriteEnabled method allows the 
mover to know when on-write checksum calculation is enabled.

Target: trunk
Require-book: no
Require-notes: no
Patch: http://rb.dcache.org/r/5221
Acked-by: Tigran Mkrtchyan