* Perform a clean shutdown when --time-limit is reached.
This includes running queued git commands, and cleanup actions normally
run when a command is finished.
* fsck: Commit incremental fsck database when --time-limit is reached.
Previously, some of the last files fscked did not make it into the
database when using --time-limit.
Note that this changes Annex.addCleanup hooks, to run after --time-limit
expires. Fsck was using such a hook to clean up after a
--incremental-schedule, and that shouldn't run when --time-limit exipires
it. So, instead, moved that cleanup code to be run by cleanupIncremental.
Resulted in some data type juggling.

…ng postInst
See haskell/cabal#1805
Apparently, old versions of cabal don't run copyHook, but at the moment
I don't know who would be using a cabal as old as 1.18, and it seems a lot
of complication to run both hooks. Although I think my code is idempotent,
so they could both be used if necessary.