Implement generics for `CheckPoint`, `LocalChain`, and `spk_client` types
Currently, the CheckPoint, LocalChain, and spk_client components are not designed to handle generic types, which limits their flexibility. To support caching of Merkle proofs (#1699) and median time passed calculations, it would be beneficial for these components to accept a generic type, specifically to accommodate Headers.
I'm rooting for this change. Being able to have CheckPoint<Header> means we can guarantee that we have a Header per checkpoint.
Currently, bdk_electrum_c (the streaming Electrum BDK chain source I'm working on) requires some complexity in the Headers struct to ensure we get the right headers per block.
@notmandatory this belongs on bdk I believe?
Thanks @luisschwab moved back.