Squashed commit of the following: (#8302)
Squashed commit of the following: (#8302)

### Problem

While compiling a largish target for the first time we end up making
~500k calls to readlink to expand the .pants.d symlink, which, in a
virtual filesystem like FUSE might not be cached. 

### Solution

Cache the result of readlink(".pants.d")

### Result

Caching the readlink improves build time by upto 30% on a virtual filesystem.
wisechengyi/pants,benjyw/pants,benjyw/pants,benjyw/pants,pantsbuild/pants,pantsbuild/pants,tdyas/pants,tdyas/pants,wisechengyi/pants,pantsbuild/pants,pantsbuild/pants,wisechengyi/pants,benjyw/pants,pantsbuild/pants,benjyw/pants,tdyas/pants,wisechengyi/pants,wisechengyi/pants,wisechengyi/pants,tdyas/pants,jsirois/pants,tdyas/pants,wisechengyi/pants,benjyw/pants,tdyas/pants,tdyas/pants,benjyw/pants,pantsbuild/pants,wisechengyi/pants,jsirois/pants,pantsbuild/pants,jsirois/pants,tdyas/pants,wisechengyi/pants,tdyas/pants