Avoid throwing in ApacheThriftGen.__init__

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

Bugs closed: 842

Reviewed at https://rbcommons.com/s/twitter/r/1428/
Support option reads via indexing.

This will support tasks with table-driven logic.

Testing Done:
$ pants.dev goal test tests/python/pants_test/option

CI went green here: https://travis-ci.org/pantsbuild/pants/builds/43132907

Bugs closed: 846

Reviewed at https://rbcommons.com/s/twitter/r/1435/
Properly detect existence of a symlink.

os.path.exists() returns False for broken symlinks.

Reviewed at https://rbcommons.com/s/twitter/r/1437/
Document how to create a simple plugin

This adds a short tutorial on how to create a simple plugin.

Reviewed at https://rbcommons.com/s/twitter/r/1434/
Better way to avoid unlinking a non-existent file.

This solves a race condition too (although there is still another race),
and is more consistent with similar patterns elsewhere in the file.

Testing Done:
Relevant integration tests pass (after cleaning, so this triggers both a failed unlink and a successful one).

Manually tested the relevant code block.

Reviewed at https://rbcommons.com/s/twitter/r/1438/
Get rid of option_helpers.py.

It was redundant with global_options.py.

This allowed us to make doc gen for global options
more uniform with that for task-specific options.

Testing Done:
CI passed.

Manually generated docs and eyeballed them.

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