The massive BUILD file and Target refactor

So much change.  See https://rbcommons.com/s/twitter/r/321/

The highlights:
* Tighten up the BUILD file context
* Remove ParseContext, don't allow recursive BUILD file parsing
* Formalize the BuildGraph data structure
* Formalize and tighten up the Target class
* Linearize the Target class hierachy
* Force explicit registration for client plugins
* Add the Payload class and tighten up invalidation