Memoize Address.__hash__ computation.

I noticed during profiling that it is a major hotspot and a very easy
change.  This is unsurprising: addresses are dictionary keys for many of
the fundamental structures in pants.

Also hoist spec_path and target_name into private attributes exposed by properties.

Testing Done:
Travis is being flakey.  ci.sh passed and a previous run of travis was green.

Reviewed at https://rbcommons.com/s/twitter/r/1118/
Sync of https://github.com/pantsbuild/pants/commit/4091a48d7e7847606ce3920b79ef3c533a0280c3