Fixup BuildGraph to handle mixes of synthetic and BUILD targets.

An upcoming change [1] will inject synthetic JarLibraries that jvm
tools will depend on.  This tickles a corner where the BuildGraph
can be asked to resolve a SyntheticAddress that has been injected.

Tighten up interfaces removing unused methods and prefixing private
helpers with _ to clarify APIs and tighten them.

Modify tests to validate the new translation of SyntheticAddress to
BuildFileAddress when lookups are made and resurrect tests in
BuildGraphTest.

This also fixes some minor fallout in production code and tests.

[1] https://rbcommons.com/s/twitter/r/1423/

Testing Done:
CI went green here: https://travis-ci.org/pantsbuild/pants/builds/42935970

Bugs closed: 837

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