Complete overhaul of scala compilation in pants.
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.

(sapling split of 627dcb8d07585986245399a94408d08f488e9a76)
kwlzn/pex,pantsbuild/pex,pantsbuild/pex,mzdanieltest/pex,mzdanieltest/pex,snyaggarwal/pex,pombredanne/pex,jsirois/pex,URXtech/pex,URXtech/pex,jamesbroadhead/pex,sixninetynine/pex,rouge8/pex,rouge8/pex,jamesbroadhead/pex,pombredanne/pex,jsirois/pex,kwlzn/pex,snyaggarwal/pex,sixninetynine/pex