Checklist For Next Major Version
==================================

* Remove most/all explicitly deprecated modules, interfaces, and features.
  Check deprecated.rst plus BOTAN_DEPRECATED annotations.

* Make the remaining PasswordHash interfaces internal

* Remove EC_Point/CurveGFp


Big Project: Public Key Split
-------------------------------

Some complications of this aren't going to become clear until we get
into it...

A number of operations currently defined on Public_Key can be
moved to Asymmetric_Key, for example key_length and algorithm_identifier.

Due to Private_Key deriving from Public_Key, the fingerprint functions
are oddly named. Otherwise we can't correctly disambiguate sk->fingerprint();
should this be the fingerprint of the public or private key. With the
split we can move this to Asymmetric_Key::fingerprint and know that the
correct thing happens.

The public and private key encoding functions (pkcs8.h, x509_key.h)
are also complicated by the combined keys. For example we have to use
PKCS8::PEM_encode(key) because key.PEM_encode() would be ambiguous
(similar situation as with the fingerprint APIs currently).  Once the
key types are split, we can move all of this to the key types
themselves, or again (for the shared cases, like unencrypted PEM) to
Asymmetric_Key.

Decoding also can become simpler. We could consider moving to a model
that doesn't use DataSource? Maybe just a span even?

Put `_` prefixes on all of the internal operations getters
(create_signature_op, etc)
