Move most of txToPairs into a new createTx func

Also changes it so that it adds new inputs incrementally as needed instead
of starting with an empty tx and adding all inputs again on each iteration.
InsufficientFunds is defined as

```Go
type InsufficientFunds struct {
        in, out, fee btcutil.Amount
}
```

so the minAmount and totalAdded here should be reversed, since minAmount is the total that must be sent (excluding change), and totalAdded is how much is available to spend.