[Chronik] Add empty HTTP server
Summary:
- Add chronik-http crate to run an HTTP server using axum within bitcoind. It currently has no routes, so every request will result in a 404.
- Use tokio runtime; outstanding HTTP requests and ports are automatically dropped when Chronik is dropped.
- Add abort_node ffi function to gracefully shut down the node with an error message.
- Add "chronik_" prefix as allowed prefix for tests.
Test Plan:
- ninja
- ninja check-functional
- Running ./src/bitcoind -regtest, and then ./src/bitcoind -datadir=/tmp/regtest -regtest -listen=0 -server=0 results in: Error: Chronik failed binding to 127.0.0.1:18442: error creating server listener: Address already in use (os error 48)
Or in a similar OS error.
Reviewers: Fabien, #bitcoin_abc
Reviewed By: Fabien, #bitcoin_abc
Differential Revision: https://reviews.bitcoinabc.org/D12673