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
The error message here suggests that we are just expecting Transaction. It could be a Transaction or transaction id as a string.