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.
You might change this to (so we don't need to rework log strings when function names change in the future):
``LogPrintf("%s: parameter interaction: -prune set -> setting -disablewallet=1\n", __func__);``