rpc: Improve argument definitions
Instead of in-place code now each argument has an (optional) kind
assigned. The RPC client will then take care of encoding each argument
according to its definition. A new base (_RpcClientBase) is added to
take care of encoding and dispatching calls.
Future patches will also use these definitions in the node daemon.
A nice side-effect of this change is the ability to use stand-alone
functions, as opposed to class member methods, for most of the encoding.
Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: René Nussbaumer <rn@google.com>