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.
Get rid of some direct uses of config in jvm_compile.

These are now replaced with registered options.

Got rid of the javac_args config key, as it was basically the same as
--args, except that pants added the -C escapes for you. This was confusing and
inconsistent anyway.

Created --source and --target options, and removed a random reference
to the old way of specifying those from test_rcfile.py, to avoid confusion
(even though the test still passed).

Testing Done:
All relevant unit and integration tests pass.

CI baking.

Reviewed at https://rbcommons.com/s/twitter/r/1357/
Remove some old-options cruft in tests.

Testing Done:
Unit tests pass.

Reviewed at https://rbcommons.com/s/twitter/r/1365/
Fix a bug related to adding sibling resource bases.

This bug was introduced in 3f5df746, a year ago:

git diff 3f5df746^..3f5df746 -- src/python/twitter/pants/tasks/jvm_task.py

Which leads me to believe that this code isn't necessary. Reviewers, please
chime in on whether we still need this sibling resource directory functionality
for sources, tests or both.

For example, do any pants.ini files at Twitter currently mention parallel_src_paths/parallel_test_paths?

It would be great to finally remove this code.

Reviewed at https://rbcommons.com/s/twitter/r/1367/