(from discussion on IRC. Currently a global `settxfee` has to be changed to override the fee rate, it would make sense to be able to specify it on a per-transaction basis. This would continue #7518)

```
-*- jonasschnelli thinks we should probably add a optional feerate parameter to fundrawtransaction
<wumpus> jonasschnelli: there isn't one yet?
-*- jonasschnelli looking..
<wumpus> I'm surprised, would be so much better than changing a global
<jonasschnelli> no.. i don't think so. Maybe there is a PR.
<sipa> there is a pr
<jonasschnelli> Hard to keep track of everything. :)
<wumpus> no, the PR does it wrong
```

Regarding implementation:

```
<jonasschnelli> The ugly thing is, that CreateTransaction uses the static DEFAULT_TARGET
<wumpus> passing in an optional feerate would be the obvious thing to do
<jonasschnelli> So, this would require some refactoring.
<sipa> just add a confirmation target to coincontrol
<jonasschnelli> Yes. This sounds good.
<wumpus> right, just slap it into coincontrol
<sipa> wasn't there a PR that added a bunch of options to fundrawtransaction?
<sipa> including that
<jonasschnelli> Not the feerate.
<jonasschnelli> But the rest is merged.
```

BOOST_FOREACH(const PAIRTYPE(const CWalletTx*,unsigned int)& coin, setCoins)
                    txNew.vin.push_back(CTxIn(coin.first->GetHash(),coin.second,CScript(),
                                              std::numeric_limits<unsigned int>::max()-1));
                
                int nIn = 0;
                CTransaction txNewConst(txNew);
                BOOST_FOREACH(const PAIRTYPE(const CWalletTx*,unsigned int)& coin, setCoins)
                {
                    bool signSuccess;
                    const CScript& scriptPubKey = coin.first->vout[coin.second].scriptPubKey;
                    CScript& scriptSigRes = txNew.vin[nIn].scriptSig;
                    if (sign)
                        signSuccess = ProduceSignature(TransactionSignatureCreator(this, &txNewConst, nIn, SIGHASH_ALL), scriptPubKey, scriptSigRes);
                    else
                        signSuccess = ProduceSignature(DummySignatureCreator(this), scriptPubKey, scriptSigRes);
                    if (!signSuccess)
                    {
                        strFailReason = _("Signing transaction failed");
                        return false;
                    }
                    nIn++;
                }
                unsigned int nBytes = ::GetSerializeSize(txNew, SER_NETWORK, PROTOCOL_VERSION);
                
                if (!sign) {
                    BOOST_FOREACH (CTxIn& vin, txNew.vin)
                        vin.scriptSig = CScript();
                }
                
                *static_cast<CTransaction*>(&wtxNew) = CTransaction(txNew);