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.
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.
Wallet: remove use of hashLittleEndian
HD/Wallet: use network objects, not strings
Wallet: enforce operator new
HDWallet: add fromBase58 exception checks
bufferutils: use verifuint for 64 bit integers

Taken from browserify-buffer.

Also adds a few more tests to assert this is working correctly from both
read and write perspectives.
The assertion in for writePushDataInt in the 32 bit case was
unnecessary as that is handled by buffer.writeUInt32LE anyway.
bufferutils: test fixture filename copies parent
Wallet: use assert for consistency
convert: remove reverseEndian
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: 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