Merge bitcoindevkit/bdk#1582: refactor!: Implement generics for `CheckPoint`, `LocalChain`, and `spk_client` types
8bc239168a2d81430244ee7633723f7eefe0d0f4 docs(chain): update docs for `CheckPoint` and `SyncRequest` (Wei Chen)
7cf4e5b9b3843ae1fce109de611edb0923db63c6 test(chain): Add test for inserting `Header` into `LocalChain` (Wei Chen)
93a382df07a4d2ccafc13164d0b98abd2ae03119 refactor!: make `CheckPoint`, `LocalChain`, and `SpkClient` take a generic (Wei Chen)
Pull request description:
Implements bitcoindevkit/bdk#1937.
### Description
This PR is a step towards header checkpointing for `bdk_electrum`. The goal is to be able to store whole headers in `CheckPoint` so they do not have to be re-downloaded. Storing headers this way would be a prerequisite for caching of merkle proofs and for median time passed.
### Notes to the reviewers
### Changelog notice
* `CheckPoint` takes in a generic.
* `LocalChain` and `ChangeSet` take in generics.
* `spk_client` types can take in generics.
### Checklists
#### All Submissions:
* [x] I've signed all my commits
* [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
* [x] I ran `cargo fmt` and `cargo clippy` before committing
ACKs for top commit:
evanlinjin:
ACK
8bc239168a2d81430244ee7633723f7eefe0d0f4
Tree-SHA512: 3c11b559a8d8f7cdf0418dbece7821e3304acd6b6e96b3e1827cdfc30b4a268c9d3511a9bc3d11408198ac93a96a84e449b879f562f368dc44a945671ef98e39