Initial stab at model-view API for sbt build.  A discussion point, this commit may disappear.

Address Havoc's comments.

* Listeners become functions
* Remove direct task execution + result methods in favor of 'request to run'
* Listening to values is now the prefered way to listen to values.
* BuildStructure is now designed to be serialized to local client wholesale, behind
  a listener interface.  This is a minimalistic set of information we can use to begin
  inspecting the build.
* Try to clarify execution behavior of asynch callbacks with execution contexts.
* Consolidate the mechanism of executing tasks/commands into *ONE* call.  This is
  to work around the delegation issue.
* Lots of TODOs about delegation of tasks (e.g. compile:compile -> compile)
* Still no way to understand/handle aggregates.