Refactor Payload.

* 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 register.py as an exposed
  object.  Then consumers of this Repository refer to this object directly.
  This allows the removal of the horrible hack in JvmTarget.provides.
  It gets us much closer to having truly immutable Payloads.

Testing Done:
ci.sh is green locally

CI is green: https://travis-ci.org/pantsbuild/pants/builds/36363381

Reviewed at https://rbcommons.com/s/twitter/r/1063/
Coalesce errors when parsing BUILDS in a spec

The idea is that when you submit a pants command, it will emit an error for ALL erroneous build files in a spec.

Note: if multiple specs are given on the command line, if a given one has an error, then only the first's will be printed, then it will error out.

I handled the errors as best as I could, becasue we need to know the flag before a lot of the options parsing happens.

Testing Done:
I tested manually and it works. I need to update the unit tests but wanted to validate my approach first.

Reviewed at https://rbcommons.com/s/twitter/r/1061/
Remove ROOT_DIR everywhere it is mentioned and replace it with build root.

Testing Done:
$ ack ROOT_DIR
(no results)

(since this is only docstring changes, no need for tests)

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