Normalize All The Path Cache Keys

Summary:
Equivalent paths do not always hash equally. When used as
hash table keys, Paths need to be normalized and either absolute or
relative to the same directory. This change normalizes the Paths used
as hash keys in the DefaultFileHashCache to ensure the cache works as
intended.

Test Plan:
0) buckd
1) buck test --all
2) add a failing assertion to a test
3) buck test --all
4) ensure that step 3 fails
Reuse the ExecutorService in DelegateRunnerWithTimeout so all tests are run on the same thread.

Summary:
It appears that all tests that use `ShadowLooper` in Robolectric need to be started from
the same thread so that its `resetThreadLoopers()` method works as expected.

Test Plan:
Sandcastle builds.
I promise to write an integration test in a follow-up diff.