Payload refactor

Review Request #1063 — Created Sept. 22, 2014 and submitted — Latest diff uploaded

benjyw, ity, jsirois, zundel

Payload refactor.

  • Break Payload into a Payload/PayloadField abstraction, and fix the major design flaw preventing clean Target subclassing.
  • Allow explicit freezing of Payloads and always freeze Payloads in the Target superclass __init__.
  • Tighten up invalidation hashing (fingerprinting) and testing.
  • Change the name of "invalidation hash" in general to "fingerprint", since the former is ambiguous and used to mean different things in several different places.
  • Make Repository and Wiki plain objects rather than Target subclasses. Users who want to expose a custom Repository instance in all BUILD files now register this instance in their internal backend's as an exposed object. Then consumers of this Repository refer to this object directly. This allowed the removal of the horrible hack in JvmTarget.provides. It gets us much closer to having truly immutable Payloads. is green locally

CI is green: