this matches the PrivateKey::signCompact and the
PublicKey::recoverCompact to handle all parts of compact (read:
recoverable) ECDSA type of signatures.
This follows the coding style guideline that the file that contains a
class should follow the exact name of this (main) class.
pubkey.{h|cpp} -> PublicKey.{h|cpp}
pubkey_utils.{h|cpp} -> PublicKeyUtils.{h|cpp}