Script: adds Script.EMPTY constant
Script: use fromChunks internally for all Script templates
Transaction: remove unnecessary Buffer copy
Transaction: remove unnecessary clone
Script: parseChunks now uses bufferutils
Script: re-order functions to project order

Removes Script.parseChunks and merges it into Script.fromBuffer
Script: check hex not template result
Script: move all templates to templates.js
Address: fix consistent casing
Script: early exit in chunk.reduce
templates: rename to scripts
Script: remove clone
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.