rpclib: Use JsonValue to re-encode responses and requests.
This approach keeps the property that we still preserve any
unrecognized fields, but takes a different approach. Instead of
using our own structs
to round-trip the json, we use a
serde_json::Value
, to ensure that we cannot forget to add the
unexpected_fields
element to a struct.
Closes #1512 (closed).
(Also closes #1511 (closed) with a rename.)