Fix some error reporting issues.

1. Let the new options system throw exceptions to the top in the
   usual way.  We already have error handling there.

2. Ensure that if we throw an exception to the top we report our
   status as FAILURE, not SUCCESS.

Reviewed at https://rbcommons.com/s/twitter/r/1113/
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/
get 'goal targets' using similar codepath to 'goal builddict'

'goal targets' and the thing that builds build_dictionary.html used different code. At any given time, one or the other worked OK, but never both. Most recently, 'goal targets' doesn't show "inherited" docstrings :-( Also, if you wanted CLI help for a non-target thing like 'artifact', you got none :-(

This change...
moves builddict's reflection-y code out to backend/core/tasks/reflect.py . Tweaks 'goal targets' to get its info from reflect.py. Yay, one less code path. Has the nice side effect of pulling in help for 'artifact', not a target type but useful.

Testing Done:
started up https://travis-ci.org/pantsbuild/pants/builds/37021417

Bugs closed: 584

Reviewed at https://rbcommons.com/s/twitter/r/1112/
Merge remote-tracking branch 'pantsbuild/master'
Add missing coverage deps

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

Reviewed at https://rbcommons.com/s/twitter/r/1117/
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/
Read values for a handful of options in the new way.

Provides an example for mass migration.

Also fixes an issue where we weren't "descoping" old-style options
in all the places they could appear.

Reviewed in https://rbcommons.com/s/twitter/r/1114/
Got ivy to map in javadoc and source jars for pants goal idea.

This involved a fair amount of finagling with conf variables spread across ivy_* and ide files,
and some changes to the ivy mustache. The mechanism by which confs are currently passed around
does not seem very robust. The whole system would probably benefit from some refactoring to
abstract away ivy's inner workings and streamline generic mapping settings; it would be nice to
have an abstract interface for mapping jar files. This could  also make it easier to deal with
failing downloads, parallelization, or using a different jar mapping tool, but all that can
wait for an entirely different review.

Also cleaned up some style issues that got missed in the last patch for the idea goal.

Don't do extra work if no one wants sources.

Conflicts:
	BUILD
	src/python/pants/backend/jvm/targets/jar_dependency.py

(cherry picked from commit 55b78960fc96bd581dcc1c21c183132a05b46d27)