Simplify subsystem option scoping.

Review Request #2380 - Created June 16, 2015 and submitted

Benjy Weinberger
nhoward_tw, patricklaw, zundel

This gets rid of the concept of "scope qualifiers", which was mostly just confusing.
Now subsystems just have scopes ('ivy', 'scala-platform' etc.) and task-specific
instances have options in the appropriate subscope (e.g., `` instead of
`` as it was previously). This has many advantages:
- Option value inheritance "just works": `` will inherit values from
`cache`, in the usual way.
- Overriding values in the subscope will also work as it does today - by registering
the option as recursive=True.
- Code is simpler, with a net reduction in LoC: "82 insertions(+), 114 deletions(-)".
- Subsystems and tasks are now more uniform. For example, both just have an options_scope
property, instead of one having a scope_qualifier() method.

This change doesn't affect any existing pants.ini or flags because we don't have any
task-specific subsystem instances yet.

It does mean that the section name for a task-specific config would be
[], not [], but that doesn't seem like a big deal.

All unit tests pass locally.

CI passes here:

Benjy Weinberger
Benjy Weinberger
Stu Hood
Eric Ayers
Stu Hood
Nick Howard (Twitter)
Eric Ayers
Benjy Weinberger
Review request changed

Status: Closed (submitted)

Change Summary:

Submitted as 3b38c063a3d7fe23bd0af9a4be9e1814eb294e77.

Benjy Weinberger

Submitted as 3b38c063a3d7fe23bd0af9a4be9e1814eb294e77. Thanks all!