Refactor the SDK to introduce a TransactionSigner abstraction. All Gas Station transaction signing logic should route through this interface. Create a base interface (TransactionSigner) with methods for public key retrieval, signing transactions, and signing messages. Wire the Gas Station to use the abstraction for all related flows, preparing the codebase for VaultSigner and future signer modules.