Reorganize option help.

Review Request #2695 - Created Aug. 25, 2015 and submitted

Benjy Weinberger
1776, 1886
kwlzn, zundel
- Print subsystem help alongside the scope that subsystem serves.
  E.g., if you ask for help for test.junit, it'll show help
  for jvm.test.junit as well.

- This required handling subsystem option 'recursion' explicitly,
  rather than relying on the subsystem author adding recursive=True
  to all their option registrations. The distinction is that
  subsystem options registered recursively from the global
  subsystem are really basic options for the purpose of help printing.
  It's obviously also nicer to not require the subsystem author to
  add recursive=True everywhere.

- More correctly implement the heuristic of showing help for all
  tasks under a goal when './pants help <goal>' is requested.
  The previous logic just showed help for any subscope of a
  requested scope, which meant it would repeat subsystem help
  once for every task-specific instance, which is obviously not
  useful for the user.

- Moves help-related code out of pants/option and into a new
  pants/help package.  This is because help code needs to depend
  on pants/subsystem, which pants/option cannot depend on.
  But it's also more organized, and makes more sense for non-option

CI running:

Eric Ayers
John Sirois
Benjy Weinberger
Benjy Weinberger
Review request changed

Status: Closed (submitted)

Change Summary:

Submitted as 347e68a37421aa2282c31a07559dcb28b7e52e64.