Autoprune

This pull extends #4515 and #4481 implementing a lightweight sanity check which executes periodically during runtime to make sure the block files needed by the node are present.

There's also a new mode of operation introduced: -pruned, which automatically removes old block files and marks the blocks as pruned.

This should allow to lower the amount of resources needed to run a node.

See the individual commits, and the other pulls for details about all the changes introduced.
For sanity you may want to actually add bool operator() to CAutoFIle (the only bool operator declared there is bool operator!()).