Basic Cleanup

Cleaned up a few things, with more changes on the way. The reason a made this pull request now is because I changed a lot of small things and the next change is going to be pretty big. If I do both in one PR it'll probably be pretty messy.

Changes:

+ quorum now has a single RWLock
+ ticking locks are now handled inside of tick()
+ processHeartbeat is now a participant function
+ adding new participants now happens as heartbeats are processed, which cleans up the Compile() function