ScalaCheck-based Protocol tests

* Added ScalaCheck and associated protocol generators to the project.
* Ensured that all non-trivial protocol tests pass.
* Fixed a bunch of bugs
* Documented need for lazy values