Add a Coin abstraction
Summary:
This is a step toward managing the UTXO on a per output basis instead of a per transaction basis. This has several advantages. First the memory footprint is smaller and we require to read less data from disk. In addition each UTXO will be immutable so optimizations can be made based on that fact.
This is based on work from Pieter Wuille.
Test Plan: Added a unittest
Reviewers: freetrader, #bitcoin_abc
Reviewed By: freetrader, #bitcoin_abc
Differential Revision: https://reviews.bitcoinabc.org/D342