Refactor transaction class


* Refactor transaction into a different subfolder
* Added a lot of tests for sighash and transaction serialization (from
  reddit's and Ryan X. Charles' `fullnode`)
* Drop "only" from sighash tests and consolidate logs
Hmm, I don't want people to use this method. It's not the actual hash of the transaction, it's the hash in little endian format (used only internally). You'll get an hexa with all the bytes inverted and if you do `transaction.hash` (which is what the user should use) you won't be able to look that up on a blockchain explorer.