Declare all projects using lazy vals

From book:
We recommend to always use lazy vals to define projects
Migrate to using sbt-assembly instead of sbt-onejar, and fix classloading issues.
Merge pull request #6 from jsuereth/wip/move-to-assembly

Migrate to using sbt-assembly instead of sbt-onejar, and fix classloadin...
Merge pull request #3 from evvers/lazy-val-projects

Declare all projects using lazy vals
Swap to using assembly plugin in chapter 12.