Rename zinc_analysis_file to zinc_analysis_collection.

To avoid confusion with the new zinc analysis file code to come...
New zinc analysis read/write code.

Auditors: pl
Get rid of a lot of zinc-related dead code .
Use native split/merge/rebase.

Auditors: pl
Get rid of TransformingArtifactCache.

It doesn't do anything useful now that we rebase in Python.

Auditors: pl
Get rid of more no-longer-needed zinc cruft.

Auditors: pl
Get rid of the old dependency analysis code.

Auditors: pl
Fix a bug in Analysis.split.

Auditors: pl
Handle java rt dep stripping correctly.

Auditors: pl
Half-assed fix for WorkUnit race condition.

Auditors: pl
Fix the WorkUnit race condition properly.

Also fixes a few other subtle issues.

Basically, async workunits are now closed when they're actually done,
or on error, and not after the work has been submitted. Not only
does this address the race condition where a parent workunit might
access a child before that child had been initialized, but it also
allows child outcomes to properly propagate to the parent.

Auditors: pl
Colorize HTML log output.

Auditors: pl
Reorder stuff in scala_compile.

Avoids a full recompile after missing deps are detected.

Auditors: pl
Remove some redundant code.
Tweaks and bugfixes in missing dep detection.

Auditors: pl
Make tool bootstrapping a bit less chatty.

Also fix some annoying circularity issue with TaskError importing.

Auditors: pl
Fix oops in scala_compile.

Auditors: pl
Change how tool bootstrapping uses products.

- Use the "data" products instead of the "file" products.
  They are a better fit for this.
- Register bootstraps against a string key, which we can also
  use for reporting. We previously used the value as the key
  (effectively creating a set instead of a map), which got a little
  confusing when debugging.
- Change reporting to hide the details of bootstrapping by
  default. All those [ivy] stanzas in the output were just confusing.

Auditors: pl
Show a [bootstrap-foo] workunit only when actually bootstrapping.

Also make ivy write to a tmpfile to avoid a corrupted file from an
errored ivy invocation being considered present in a future run.

Auditors: pl
Fix an invalidation bug.

It was causing spurious invalidation, especially of ivy, where you'd build
successfully, change nothing at all, build again and ivy would re-resolve.

The problem was that were were treating Pants targets as things to
invalidate on, and they unfortunately have the same id as the target
they point to...

TODO: Get rid of Pants in the target graph. It exists only as a BUILD
file parsing construct, it shouldn't affect things later on.

Auditors: pl