Add payload.get_field_value() to fix KeyError from pants goal idea testprojects::

There are cases where we access a field on a payload that doesn't exist.

Rather than try to figure out when target.payload.excludes exists,
I added a method Payload.get_field_value() that directly access the
value and has the capability to return 'None' for a missing field.

```
./pants goal idea testprojects:: --print-exception-stacktrace
...

Exception caught:
  ...
  File "/Users/zundel/Src/pants/src/python/pants/backend/codegen/tasks/apache_thrift_gen.py", line 183, in createtarget
    return self._create_java_target(gentarget, dependees)
  File "/Users/zundel/Src/pants/src/python/pants/backend/codegen/tasks/apache_thrift_gen.py", line 201, in _create_java_target
    return self._inject_target(target, dependees, self.gen_java, 'java', create_target)
  File "/Users/zundel/Src/pants/src/python/pants/backend/codegen/tasks/apache_thrift_gen.py", line 223, in _inject_target
    tgt = create_target(files, deps)
  File "/Users/zundel/Src/pants/src/python/pants/backend/codegen/tasks/apache_thrift_gen.py", line 200, in create_target
    excludes=target.payload.excludes)
  File "/Users/zundel/Src/pants/src/python/pants/base/payload.py", line 98, in __getattr__
    field = self._fields[attr]

Exception message: 'excludes'
```

Testing Done:
Added unit test, CI passed.

Bugs closed: 659

Reviewed at https://rbcommons.com/s/twitter/r/1150/
move the publish-extras-task doc to its own page. mention repo in register.py

moved some info around in hopes folks can find it more easily
mention repo-in-register.py

before:
setup_repo had some info about setting up publishing, but the publish page didn't link to it.
setup_repo didn't mention something new and important: setting up a repo in a plugin/register.py
publish page had a section about setting up an extras-with-publish task

after:
link to setup_repo's publish section from the publish page
mention repo-in-register.py in setup_repo
mv 'extras-with-publish task' to its own page, linked from setup_repo

Bugs closed: 602

Reviewed at https://rbcommons.com/s/twitter/r/1090/
get the name right, no stray quote mark, sheesh

Testing Done:
monkey-patched in Twitter's pants. hand-copied over. what coudl go wrong?

Bugs closed: 679

Reviewed at https://rbcommons.com/s/twitter/r/1164/
Fix issue 668: make release.sh execute packaged pants without loading internal backends during testing

The introduction of src/python/internal_backend plugins broke build-support/bin/release.sh.
Release.sh, during dry-run and real testing, fails to execute packaged pants, because it
doesn't have internal_backend packaged within but the repo root pants.ini still asks it
to load them.

The fix is to use PANTS_CONFIG_OVERRIDE during such execution with an empty plugin list.

Testing Done:
ran and passed:

- build-support/bin/release.sh -n
- build-support/bin/release.sh -t

CI passed: https://travis-ci.org/jinfeng/jinfeng-pants-fork/builds/37896390

Bugs closed: 668

Reviewed at https://rbcommons.com/s/twitter/r/1158/
A convenient way to set new-style options in tests.

Testing Done:
CI passed.

Merged this into a branch where I switched a bunch of JvmTask-related tests over to new options, and checked that this worked.

Reviewed at https://rbcommons.com/s/twitter/r/1163/
comments attempting to clear up: what goes in BUILD.tools ? what goes in 3rdparty/BUILD ?

Inspired by conversation on https://rbcommons.com/s/twitter/r/1151/ , I bet we want comments on these files helping folks to figure out which deps go where.

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