No writes to remote artifact cache by default.
IvyResolve refactor and bootstrap phase

* Refactor IvyResolve primary into IvyUtils and Task.ivy_resolve
* Add a bootstrap phase, currently only with the Task BootstrapJvmTools
* Relax the has_sources requirement of VersionedTarget, so we can
invalidate and put JarDependencies into the artifact cache
* Allow workunit_factory as param to NailgunTask.runjava and
runjava_indivisible.  This is to allow them to be used anywhere one
might use their equivalent functions in binary_util.

Auditors: benjy
Move JavaCompile to new tool bootstrapper

Auditors: benjy

Conflicts:
	BUILD.tools
Move ScalaCompile over to new tool bootstrapping

Also refactor zinc_utils to access any necessary tool classpaths
lazily

Auditors: benjy
Move AntlrGen over to new tool bootstrapping

Auditors: benjy
Move BenchmarkRun to new tool bootstrapping

Auditors: Benjy
Move Checkstyle to new tool bootstrapping

Auditors: benjy
Move NailgunTask to new tools bootstrapping

Auditors: benjy
Move JUnit to new tools bootstrapping

Auditors: benjy
Move SpecsRun to new tools bootstrapping

Auditors: benjy
Small style tweaks (PEP8)

Auditors: benjy
Small fixes and comments related to bootstrap phase

Auditors: benjy
Move scala-repl over to new tools bootstrapping

Auditors: benjy
Small tweaks to fix ide_gen goals.

Also error on trying to resolve an empty toolset.

Auditors: benjy
Change ValueError to TaskError

Auditors: benjy
Add missing import in ivy_resolve

Auditors: benjy
Pass a java runner through IvyUtils.mapjars

Auditors: benjy
Fix bug in ivy reports for compound targets

Also generate a report for every exclusives group.

Auditors: benjy
A temporary test to see if ivy under ng is bad

Specifically, whether or not it's causing the failures due to what
appears to be a race condition when accessing ivy.xml and report files.

Auditors: benjy
Cache bootstrap classpath calls and lock Ivy calls

This should fix the spurious failures due to concurrent ivy resolution,
which was ultimately due to not locking around ivy calls, but
exacerbated by concurrent background workers during cache checks hitting
resolution code.

Also roll back the changes in dc9d0bdeab90d9717c404f0820d514cead073efb;
nailguns were not the cause of this bug.

Auditors: benjy