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.
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/
Add scope name  to console while printing goal help

Right now,
./pants goal compile --help shows

compile: Scala source code style check.

-h, --help   show this help message and exit
--[no-]skip  Skip scalastyle. (default: None)

-h, --help              show this help message and exit
--partition-size-hint <# source files>
                        Roughly how many source files to attempt to compile
                        together. Set to a large number to compile all sources
                        together. Set to 0 to compile target-by-target.
                        (default: 9223372036854775807)
--[no-]warnings         Compile with all configured warnings enabled.
                        (default: True)
--missing-deps {off,warn,fatal}
.
.
--plugins _COMPILE.SCALA_PLUGINS__
                        Use these scalac plugins. (default: [])

-h, --help              show this help message and exit
--partition-size-hint <# source files>
                        Roughly how many source files to attempt to compile
                        together. Set to a large number to compile all sources
                        together. Set to 0 to compile target-by-target.
                        (default: 9223372036854775807)
--[no-]warnings         Compile with all configured warnings enabled.
                        (default: True)
--missing-deps {off,warn,fatal}
                        Check for missing dependencies in java code. Reports
                        actual dependencies A -> B where there is no

.
.
--[no-]delete-scratch   Leave intermediate scratch files around, for debugging
                        build problems. (default: True)
--args _COMPILE.APT_ARGS__
                        Pass these extra args to javac. (default: [])
.
.
-h, --help              show this help message and exit
--partition-size-hint <# source files>
                        Roughly how many source files to attempt to compile
                        together. Set to a large number to compile all sources
                        together. Set to 0 to compile target-by-target.
                        (default: 9223372036854775807)
--[no-]warnings         Compile with all configured warnings enabled.
                        (default: True)

This is very confusing,
Plus does not show the sub tasks in this goals and hence anyone wanting to use task specific option has no idea how to.

@Benjy let me know if this was intentional.

Testing Done:
yes.
You can see the tasks in the compile goal.

./pants goal compile --help

/Users/tdesai/projects/pants/dist/pants_local_binary.pex -> /Users/tdesai/projects/pants/pants.pex

compile: Scala source code style check.

compile.scalastyle
  -h, --help   show this help message and exit
  --[no-]skip  Skip scalastyle. (default: None)
compile.scala
  -h, --help              show this help message and exit
  --partition-size-hint <# source files>
                          Roughly how many source files to attempt to compile
                          together. Set to a large number to compile all sources
                          together. Set to 0 to compile target-by-target.
                          (default: 9223372036854775807)
  --[no-]warnings         Compile with all configured warnings enabled.
                          (default: True)

..
compile.apt
  -h, --help              show this help message and exit

..
  --args _COMPILE.APT_ARGS__
                          Pass these extra args to javac. (default: [])
compile.java
  -h, --help              show this help message and exit
  --partition-size-hint <# source files>

Reviewed at https://rbcommons.com/s/twitter/r/1375/
Allow adding entries to source_roots

Testing Done:
Ran source_roots tests.

Reviewed at https://rbcommons.com/s/twitter/r/1359/
doc: update many bash examples that used old-style flags.

some of these had become lies;
some of these still work, but now seem strange

Reviewed at https://rbcommons.com/s/twitter/r/1377/
Merge branch 'master' into py_bin_plat