Compile analysis

This PR adds support for fairly robust serialization of Compile Analysis results for clients.

Few things to note:

* There is a temporary mechanism for converting `sbt.inc._` into protocol equivalents that will likely be revised.
* Not everything in `sbc.inc.Analysis` is carried-over verbatim.  For instance, fields that throw exceptions because name-hashing is turned off are `Option` fields in the protocol versions.
* At some point a review of what actually should constitute a compile analysis might be in order.  In particular, if folks working on sbt think certain fields are too experimental to be encoded and delivered to clients we should remove/amend those fields.

This is a first step in enabling Play projects to be forked off (they will fork off and use `SbtClient` to communicate back to the parent)
I'm guessing scalariform reformats this, but we probably still don't have it in the build, have just been relying on Eclipse running it. so this will get reformatted as soon as I touch this file ... :-)