Due to the incompatibility of [enum Signature] (which dispatches a trait
that assumes signature and pubkey bytes for verification), here we add a
wrapper enum where member can just implement a lightweight [trait
AuthenticatorTrait]. This way MultiSig (and future Authenticators) can
implement its own verify.
Annotating a trait or enum definition with an #[enum_dispatch] attribute will register it
with the enum_dispatch library, allowing it to be used to generate impl blocks elsewhere.