Accept multisig addresses that are lists of public keys (instead of pubk...

...eyhashes) for both source and destination.

[need more tests]

with this PR:
- the API accepts pubkeys both in addresses (source and destination) and in parameter `pubkey`.
- the CLI accepts pubkeys in addresses (source and destination), extracts them from the wallet or asks them to the user.
- For the API and the CLI not provided pubkeys are searched in the blockchain.
We shouldn't have a `for` loop for two elements. Can't we just call the function twice?

Also, we should rename this variable---neither `source` nor `destination` is a 'key'.