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
Merge pull request #197 from sbt/wip/scalacheck-tests

ScalaCheck-based Protocol tests