register_options for some help-ish and doc-ish tasks.

Testing Done:
https://travis-ci.org/pantsbuild/pants/builds/37842836

Reviewed at https://rbcommons.com/s/twitter/r/1135/
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/
A base class for tests that test a single task type.

Subclasses advertise the task type they care about in setupClass().

Deals with option registration and scoping for the task under test.

Also addresses some small code review comments from a previous commit.
WIP
WIP
WIP
WIP
WIP
WIP
WIP