Reference Implementation pt 1
This PR contains a bunch of tweaks that get us closer to a full reference implementation. We're pretty close right now.
Stuff that's in here:
- expand Consensus.md to define everything except for encoding
- switch hashing to the blake2 algorithm
- remove orphan handling from the consensus package (fixes #307 (closed))
- increased test coverage
- CoveredFields rules are now enforced
- storage proof transaction rules are now enforced
- type system now includes siafunds (though nothing is done with them)
- CreateGenesisState now takes a timestamp, which will make certain test types easier.
For a reference implementation, what remains is:
- 128bit uints that don't overflow
- siafund implementation
- 100 block cooldown on the certain output types
- testing
I think most of it will be done in the next 3 days.