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/
Sync of https://github.com/pantsbuild/pants/commit/dee871cde05294a66e2dcfcd471e1a349ac209d1