Cache files created by (specially designed) annotation processors.

These annotation processors (so far, only twitter.common.args) write a file into META-INF which lists all of the files they created. Make pants process that file to decide which files should go in the artifact cache.

Testing Done:
Ran integration tests.

Bugs closed: 132

Reviewed at https://rbcommons.com/s/twitter/r/1250/
In IvyImports, make a single call to ivy to map all jar files.

If you have many targets with jars to map in, this is a significant performance increase.

Testing Done:
Added a new unit test.
Ran this in our internal repo where we have a lot of uses of java_protobuf_library() using imports=.

CI running at:  https://travis-ci.org/pantsbuild/pants/builds/41531811

Bugs closed: 286, 809

Reviewed at https://rbcommons.com/s/twitter/r/1364/
Revert "In IvyImports, make a single call to ivy to map all jar files."

This reverts commit 1aaf3b676187cf362ba8b7fed461db3538cd5c00.
Refactor duplicate dependency detection to be in the BUILD file parsing logic

This is a refactoring of https://rbcommons.com/s/twitter/r/1332/.  The intent of the original
change was to keep BUILD files from declaring the same target twice in a dependency[] attribute.
This refactor was done to avoid triggering this error due to implicit dependency injection.
For example, We don't really care if an explicit dependency is added to a BUILD file that
duplicates a dependency injected by a code generator like protobuf_gen.py.

Now the same case fails with:

```
Exception message: Invalid target TargetAddressable(..., name=greet, **kwargs=...): dependencies must be unique.  '3rdparty:guava' occurs more than once.
 while executing BUILD file /Users/zundel/Src/pants/examples/src/java/com/pants/examples/hello/greet/BUILD
 Loading addresses from 'examples/src/java/com/pants/examples/hello/greet' failed.
  referenced from examples/src/java/com/pants/examples/hello/main:main-bin
  referenced from examples/src/java/com/pants/examples/hello/main:main
```

Testing Done:
CI is running.

Bugs closed: 808

Reviewed at https://rbcommons.com/s/twitter/r/1362/
Remove unused/invalid import to fix build break
Add Pants Target Type to depmap so that intellij plugin can use this to identify scala target VS java target

Testing Done:
Manually ran
1. ./pants goal test tests/python/pants_test/tasks:depmap
2. ./pants goal test tests/python/pants_test/tasks:depmap_integration

Ci here https://travis-ci.org/pantsbuild/pants/builds/41554780

Bugs closed: 655

Reviewed at https://rbcommons.com/s/twitter/r/1366/
doc: reword some BUILD File advice.

It used word "publish" misleadingly, so I fixed that.
While I was in there, fixed up some kooky grammmar.
And Patrick spotted some obsolete stuff, so clean that up, yay.

Bugs closed: 486, 687

Reviewed at https://rbcommons.com/s/twitter/r/1355/
Re-upload artifacts that encountered read-errors

Before https://rbcommons.com/s/twitter/r/1272/, any artifact that wasn't successfully read either due to a normal cache-miss or corruption, would be re-compressed and uploaded.

While this generated a large amount of pointless work for clients and cache servers in the common case of normal cache-misses (particularly with thundering herds after changes that invalidated large numbers of cache keys), it did have the beneficial behavior of automatically causing corrupted artifacts to be replaced, if they were corrupted in such a way as to cause decompression errors.

Preserving the gains from that change (eg not re-uploading after a cache-miss if the artifact is in the cache by the time the client has it), we can restore that behvaior by keeping track of which cache keys were simply not in the cache vs those that were but could not be read, and when uploading artifacts, only skip existing ones that were simple missses.

We can do this without substantially changing the interface of use_cached_files by introducing a False-y return value that additionally indicates a read-error.