Bugfix: rpc id was always 1
Add write support for Decimal values

AuthProxy would return Decimal objects, which is great.
But could not JSON-encode Decimal objects, so things
like this didn't work:

    balance = connection.getbalance()
    connection.sendtoaddress(foo, balance/2)

The fix is a little EncodeDecimal helper function.

Tested in some Bitcoin smartfee regression tests I'm writing.
Add debug logging of RPC calls, results

Logging the RPC calls and results made can be useful when debugging
problems. This uses the standard python logging module; simple usage
to trace all RPC calls to stderr:

    import logging
    logging.basicConfig()
    logging.getLogger("BitcoinRPC").setLevel(logging.DEBUG)

Example logging output:

    >>> c = AuthServiceProxy("http://u:p@127.0.0.1:18332")
    >>> c.getinfo()
    DEBUG:BitcoinRPC:-1-> getinfo []
    DEBUG:BitcoinRPC:<-1- {"connections": 8, ...etc }

    >>> c.setgenerate(True, 2)
    DEBUG:BitcoinRPC:-2-> setgenerate [true, 2]
    DEBUG:BitcoinRPC:<-2- null

    >>> c.setgenerate(True, Decimal('2'))
    DEBUG:BitcoinRPC:-3-> setgenerate [true, 2.0]
    DEBUG:BitcoinRPC:<-- {"result":null,"error":{"code":-1,"message":"value is type real, expected int"},"id":3}