Complete overhaul of scala compilation in pants.

- Relies on changes to zinc/sbt.
- Simplifies the code significantly.
- Also, changes to many other components.
- Also many other bugfixes etc.

It's not feasible to break this up into multiple commits,
as this is a merge from a branch that has acted as a master
branch for months now at Foursquare.

This change is too dramatic to code-review, but individual parts of
it have been reviewed internally at Foursquare, and the code
as a whole has been in use at Foursquare for months now, so
it is definitely better than the old implementation...

Consider this a one-time sync of Foursquare's work back into master.