Improve the protocol roundtrip tests

- reduce cut-and-paste between with and without BuildValue
- add commented-out tests of the ScopedKey and its components
  (these aren't yet registered dynamically)
- add require() in the formatters to detect initialization cycles
- when a formatter throws, print what we were formatting
Introduce dynamic serialization of ScopedKey, MinimalBuildStructure

This introduces NonTrivialSerializers in DynamicSerialization,
which are serializers handled through registration and not
through the big switch statement.
Merge pull request #194 from sbt/wip/havocp-roundtrip-test

Add dynamic serialization of sbt-specific protocol types