If one calls `fundrawtransaction`, the change address will be retrieved from the keypool, though, this key/address will always be returned to the pool, leading to the problem that the next `getnewaddress()` call will restult in the same key/address.

Either we remove the auto-change-address (users would need to call `getrawchangeaddress` first [current best practice anyway]) or we add a call to keep/mark a specific key/address as change (after one have sent the funded raw transaction).

Reported by @NicolasDorier on IRC.
true, true);
        if (options.exists("changeAddress")) {
            CBitcoinAddress address(options["changeAddress"].get_str());
            if (!address.IsValid())
                throw JSONRPCError(RPC_INVALID_PARAMETER, "changeAddress must be a valid bitcoin address");
            changeAddress = address.Get();
        }
        if (options.exists("changePosition"))
            changePosition = options["changePosition"].get_int();
        if (options.exists("includeWatching"))
            includeWatching = options["includeWatching"].get_bool();
        if (options.exists("lockUnspents"))
            lockUnspents = options["lockUnspents"].get_bool();
        if (options.exists("reserveChangeKey"))
            reserveChangeKey = options["reserveChangeKey"].get_bool();
        if (options.exists("feeRate"))
        {
            feeRate = CFeeRate(AmountFromValue(options["feeRate"]));
            overrideEstimatedFeerate = true;
        }
        if (options.exists("subtractFeeFromOutputs"))
            subtractFeeFromOutputs = options["subtractFeeFromOutputs"].get_array();
      }
    }
    
    CMutableTransaction tx;
    if (!DecodeHexTx(tx, request.params[0].get_str(), true))
        throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed");
    if (tx.vout.size() == 0)
        throw JSONRPCError(RPC_INVALID_PARAMETER, "TX must have at least one output");