Transaction Clean

Chained on https://github.com/bitcoinjs/bitcoinjs-lib/pull/211.

This pull request reworks the internals of `Transaction`, removing redundant code, abstractions and overall does a cleanup.
Much of the commits are self explanatory, and it should be noted this pull request does not rework the `Transaction` tests to be data driven.  That is still to be done.

Comparison link: https://github.com/dcousens/bitcoinjs-lib/compare/tests...txclean
Do we expose these constants anywhere? It seems like devs might need them for some of the functions (namely Transaction.prototype.sign).