This patch adds a -strictjsonrpcspec flag.
If the flag is used, bitcoind enters JSON-RPC 2.0 mode, which allows it to be fully spec-compliant (and thus work with libraries like libjson-rpc-cpp without modification).
I’ve added a functional test for the specific bits of the spec that I’ve changed.
univalue changes are included in this commit for ease of review but I can pull those out (see https://github.com/bitcoin-core/univalue/pull/12)