Wallet: cleanup createTx control flow

Unknowingly this also revealed a subtle bug in the previous
implementation which allowed the creation of transactions even
when no UTXOs existed.  This has been amended in the tests.
Wallet: remove async interface
Wallet: use dustThreshold directly

The definition of a dust amount is pretty clear, and I feel it is less
readable when represented as isDust(amount) or !isDust(amount), by
comparison to    amount <= dustThreshold   or   amount > dustThreshold.

Also means I don't have to stray my eyes to understand the
implemention by looking up isDust does.
Transaction: remove TxIn/TxOut exports
Transaction: restrict TxIn input parameters

TransactionIn is only used by Transaction.prototype.addInput and the
Transaction constructor.
It is therefore safe to restrict these input parameters.
Transaction: use TxIn/TxOut consistently
Transaction: extract DEFAULT_SEQUENCE constant
Transaction: move all constants to top
Transaction: remove hash:index notation
Transaction: remove TxIn/TxOut from API
Transaction: add support for custom output scripts
Transaction: renames getHash to getId

Also removes the inherent calculation of tx.hash after a
deserialization.
If a user wants this, they can do it themselves very easily; the
bitcoinjs policy thus far has been to avoid result caching in the
default case.
Especially since a hash is not guaranteed to be the same if the
Transaction is modified after deserialization.

Also adds a test for getId.
Transaction: TxHash no longer stored as hex