Move self-contained pieces into their own package.
This spells out the depedencies and the context each
sub-package focuses on.
Not the final structure as it's WIP.
Just tying the knots while climbing up the rope.
AddClaim / AddSupport is working with minimal testing done so far.
RemoveClaim / RemoveSupport is implemented, but not tested yet.
Some known issues:
Currently, we update the BestClaim for each node in a lazy fashion.
Each node could add/remove claims/supports without recalculating hash
until its being obeserved externally.
However, due to the "Takeover Delay" bidding rule, as the block number
increases, the bestClaim might changes implicitly. The Trie can't detect
this passively, and would need some mechanism for this.