Compile + Incomplete Testing

This is a bit of an incomplete PR, because the testing is not quite finished. The problem is that I keep running into more things that need to be done in order to finish the testing. At this point I need to write 'tossParticipant()' in order to complete the testing, and I'm not sure how much code that will be.

This PR is already looking pretty bloated, so I'm making it now. There are a bunch of things that seem to make sense to go into the PR but I don't want my PRs blowing up to 1000 lines of code, which this is on track to hit.

Changes: 

+ add functions to generate random numbers, this is to randomly order participants when processing heartbeats
+ implement deterministic random ordering of participants in Compile() based on entropy from previous block
+ rename bridge.c to erasure.c
+ create crypto.CheckKeys(), which is just for testing purposes
+ add tests for state.go
+ split TestTick() into multiple functions
+ add heartbeat tests
+ add processHeartbeat() with testing
+ add Compile() with incomplete testing