Pick up classpath based on target id; Set up infrastructure to pass down full targets' info to external builder

Review Request #3300 — Created Jan. 6, 2016 and submitted — Latest diff uploaded

patricklaw, stuhood, tejal, zundel

Earlier https://rbcommons.com/s/twitter/r/3211/ was merged to safely output classpath with target id.

So this change:
1. Allows the plugin to pick up classpath given the exported target id (depending on https://rbcommons.com/s/twitter/r/3291/).
2. Setup the infratrusture to pass Set<TargetAddressInfo> down to the external builder via gson serialization, so further external builder logic correction can be done. For example, to unblock the temp fix (https://rbcommons.com/s/twitter/r/3237/) by telling whether to compile a target by its property is_synthetic in TargetAddressInfo rather than its name.

In order to reassemble Set<TargetAddressInfo> in the external builder, the following two files are currently 'duplcated' via symblinks, but ideally we want to isolate them as a separate target and have others depends on it, but the plugin BUILD relations is a bit of tricky(full of python code), so we might have to come back to this.