Add a resources_root field to java_library and friends.

Summary:
When java_library rules have their own local resources, we usually try to put
those under one of the root-less dir names given in `src_roots` in the
.buckconfig. Sometimes that doesn't work well -- maybe the java_library dir is
already below one of the absolute paths that take precedence, or maybe the name
of the resources dir is too common to safely make it root-less. What's really
needed is for a java_library to be able to specify a resources directory that
only applies to that one rule. Thus, the new `resources_root` field.

Test Plan: New unit and integration tests.
Kill BuildRuleResolver.buildAndAddToIndex.

Summary:
This was added to be used in
ProjectGeneratorTest.testIosLibraryRuleWithGenruleDependency; however we
refactored the code to not need that method anymore.

Test Plan: buck test --all
Bump number of buckd runs before restarting buckd -> 64

Test Plan: yolo2
Stop "buck test" processes over-writing each others test files

Summary: Running multiple instance of `buck test` in the same working
copy is fine as long as they are testing different targets.  When they
are testing the same targets, they overwrite each others XML results
files.  This diff introduces a hack that forces the use of one-time
(i.e. never cache-able) unique results directories, specifically for
JUnit testing, so that multiple buck processes don't collide with each
other.

Test Plan:
Made some five second long tests and ran them at the same time.  Each
buck process only outputs the thing it tested.

Without this hack, the first buck reports the results from TestA, and
the second reports the results from TestA and TestB.  Worse, if I got
the timing right, the second could delete the TestA result in between
launching the JUnitRunner, and reading the subsequent results file, but
that's harder race-condition to simulate.