I'm not sure why there are 3 of these and each is polymorphic. Also, why was `compare_keys` removed? `compare_keys` is a very useful function *for public keys only*. Without `compare_keys`, using public keys as map keys or similar is much harder. Crucially, `compare_keys` type must be ascribed to be *only* `public key -> public key -> int`.