## Description
a separate pruner that use `epochs` table and `cp_tx` table to track
progress of pruning and handle disaster recovery;
and `checkpoints` table as available range data source.
## Test plan
local run and verify via local client
- progress tracking via epoch, cp, and tx


- verify on checkpoints & tx_ tables
- make sure that the checkpoints table is indeed latest cp_tx cp + 1

- make sure that all cp < min_tx in cp_tx have been pruned

---
## Release notes
Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.
For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.
- [ ] Protocol:
- [ ] Nodes (Validators and Full nodes):
- [ ] Indexer:
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK: