Wrap x25519-dalek and ed25519-dalek types.
With this change, we'll no longer need to expose the types from
dalek-cryptography as part of our API, and we'll have more freedom
to switch implementations, or to upgrade to a newer
rand ahead of their schedule.
My primary motivation here is to upgrade to rand-0.9 (#1774 (closed)) without having to re-introduce RngCompatExt (removed in 7fb24cb6 back in arti 1.1.11). But this also helps reduce the amount that our APIs expose the details of the crates that they use here, since they seem not to be as aggressively updated as rust-crypto.
I've had to change a couple of the APIs to make them implementable in isolation, but this is not a full cleanup for the interfaces: some of the method names used are still a little surprising.