Split AddressMapper out of BuildFileParser

Split caching and address mapping out of BuildFileParser and into its own class, BuildFileAddressMapper.

Move all of the BuildGraph population methods out of BuildFileParser and into BuildGraph, which delegates to its own BuildFileAddressMapper for TargetProxy (now TargetAddressable) resolution.

Generalize the notion of a TargetProxy to an Addressable.  It is now the responsibility of the BuildGraph (which has an AddressMapper) to resolve a TargetAddressable, convert it into a Target, and then traverse the transitive dependencies as necessary.

Move BuildFile caching into the BuildFile class.

Testing Done:
CI is green

Reviewed at https://rbcommons.com/s/twitter/r/584/