Memoize fingerprints by the FPStrategy hash

* Force __hash__ and __eq__ to be defined for FingerprintStrategy
  subclasses.
* Fix implementations of Target.{transitive_,}fingerprint and existing
  FingerprintStrategy subclasses.

Testing Done:
CI is clean at https://travis-ci.org/pantsbuild/pants/builds/37204281

Reviewed at https://rbcommons.com/s/twitter/r/1119/
Sync of https://github.com/pantsbuild/pants/commit/f59115188e0f18e2a30433d73d73da650da4b49c