Improve clientInvoke to avoid requirement that return types are default-constructible. This lets https://github.com/bitcoin/bitcoin/pull/10102 return types like PartiallySignedTransaction, WalletAddress, util::Result that don't have default constructors, without needing to wrap them or give them default constructors.
Also remove requirement that return types are copyable or movable, and add tests for this, and improve documentation for ReadDest classes to describe how they are supposed to be passed to ReadField callers and used inside CustomReadField implementations to deal with different types including non-movable, non-default-constructible ones.