According to the help text of createrawtransaction, the following args are accepted:
```
Arguments:
1. "inputs"                (string, required) A json array of json objects
2. "outputs"               (string, required) a json object with outputs
3. locktime                  (numeric, optional, default=0) Raw locktime. Non-0 value also locktime-activates inputs
```

however, this does not match the named args ( https://github.com/bitcoin/bitcoin/blob/8152d3fe57a991e9088d0b9d261d2b10936f45a9/src/rpc/client.cpp#L84 )

Imo, backporting a breaking change to 0.14.1 is reasonable. Though, I'd like to hear other opinions.
{
    UniValue params(UniValue::VOBJ);
    for (const std::string &s: strParams) {
        size_t pos = s.find("=");
        if (pos == std::string::npos) {
            throw(std::runtime_error("No '=' in named argument '"+s+"', this needs to be present for every argument (even if it is empty)"));
        }
        std::string name = s.substr(0, pos);
        std::string value = s.substr(pos+1);
        if (!rpcCvtTable.convert(strMethod, name)) {
            
            params.pushKV(name, value);
        } else {
            
            params.pushKV(name, ParseNonRFCJSONValue(value));
        }
    }
    return params;
}