Support loading config from multiple files.

Review Request #1442 - Created Dec. 8, 2014 and submitted

Benjy Weinberger
jsirois, patricklaw, zundel

This subsumes two disparate pieces of functionality:

B) rcfiles.

A) This env variable has been retconned int a --config-overrides
bootstrap option.

B) Rcfiles used to contain extra command-line flags for various commands, which
was weird. Since all flags are now options, and so can be set from config,
the new rcfiles are just regular pants.ini-style config files.

After deploying pants with this commit, existing rcfiles will need to be converted
to pants.ini style. However currently rcfiles are broken anyway, so this isn't
an onerous requirement.

This commit also includes various changes needed to get things to work under
this new config scheme. Some of these are temporary hacks that will go away
when we get rid of Command, or when we get rid of all direct accesses to config.

One prominent change is a modification to config caching. Previously
configs were keyed by the file they were read from. But in practice
code always calls Config.from_cache() with no argument, which
defaults to the regular pants.ini. This leads to dangerous confusion
when config can be read from other files. So now there's just a single
global cached config, which must be set explicitly. Again, this will
go away once we convert all direct config accesses to options accesses,
and plumb options through to all the necessary places.

CI passes.

Larry Hosken
Eric Ayers
Benjy Weinberger
Review request changed

Status: Closed (submitted)

Change Summary:

Submitted as cf6f30685b1540ae99c8ab7dd23ee4e75e5d2275.