client: Reinstate support for hoarding of memory images
client: Reinstate support for hoarding of memory images

- Re-add support for hoarding memory images and keyrings.  We now have a
directory, $hoarddir/img, which contains the most recent keyring and memory
image seen for each parcel.  (The files are named according to the parcel
UUID.)  At checkout time, we calculate the local and remote hashes, and if
they're equal, we don't need to download again.  Otherwise, we download the
file and immediately update the hoard cache.  This ensures that we never
have to download a file twice, even if a clean checkin or an "isr clean"
call occurs.  It also simplifies the decrypt/decompress logic, since we
always read the encrypted files from the hoard cache.  At client commit, if
a new keyring and memory image have been generated, we update the hoard
cache.

- Abstract file retrieval at checkout into a helper function

- Clean up the checkout code

cmusatyalab/openisr,cmusatyalab/openisr,cmusatyalab/openisr,cmusatyalab/openisr,cmusatyalab/openisr