Pluggable signers: KeyBag signer

Introduced pluggable signers notion. Instances of
TransactionSigner could be added into the wallet, so that they subsequently
applied to transaction to complete it.
Existing signing code (Transaction.signInputs) was refactored into
KeyBagTransactionSigner, which is always implicitly added to any wallet.