Move most of txToPairs into a new createTx func

That new function can be easily tested because it doesn't need a
Wallet instance.
I think renaming it to InsufficientFundsError would be better.  While error *variables* are usually prepend with Err, the standard library tends to name error *types* as SomethingError. For example, os.LinkError, os.PathError, os.SyscallError, etc.