Right now we use PEM files to provide an identity for signing requests, but we'd also like to support NitroHSM (for node providers) and the Ledger Nano, and then possibly more. I propose to do this by splitting the core governance related code into a new, internal ink crate, and use the quill crate to define the CLI and its behavior, and then have multiple auth-* crates referenced by quill to do the actual work of working with the device to sign requests.