Add parallel compilation support to scala compiles

Most of the relevant logic happens in ParallelCompilationManager,
which is generic to any task type. Callers should subclass PCM and
define a method that, given what targets have been, are currently
being, and still need to be compiled, returns sets of targets to
compile next. PCM handles forking these compiles out to a
configurable number of workers.

This commit also includes:

  - a simple subclass of PCM, "NaiveParallelizer", which only
	compiles one target at a time (per worker), working its	way up from the leaves of the dependency DAG,
  - the ability for scala compiles to use this parallelization
	strategy, and
  - logic to allow parallel compiles to work with or without
	nailgun.

Auditors: benjy