This adds more of the pruning API discussed in #35627:
btck_block_manager_update_prune_lockandbtck_block_manager_delete_prune_lockkeep blocks at and above a height until the application deletes the lock. Like the node's prune locks, they are held in memory, so an application sets them again after a restart before it prunes.btck_block_manager_prune_to_targetdeletes the oldest block files until usage, with room for the next allocation, is below a target. It keeps the same blocks asbtck_block_manager_prune_up_to_height. Unlike-prune, the target has no minimum, and pruning doesn't wait for the chain to reach a minimum height.
Target pruning uses BeginManualPrune. BeginTargetPrune only proceeds after a new block file is allocated, and the periodic flush during block processing already consumes that, so it would never prune.
Names the buffer FindFilesToPrune keeps below a target. The kernel uses it to tell whether a flush would help.
Based on #36856. Draft until it is merged.