New internal configuration system

The new system uses classes and inheritance to handle precedence over the many
possible configuration sources (default options, environment variables, system
condarc file, and user condarc file).

This has several advantages over the old way:

- It is more scalable.
- It is now possible to read all possible configuration values (although to
completely reach this goal, we may have to change some __getattr__ calls to
instead modify __dict__ directly).
- The precedence logic is completely handled by Python's MRO system.

The only downside is that you have to know what you are doing, and, for
example, properly delegate things upward using super(), or it won't work.

There are two major changes in behavior:

- The system and user condarc files are now merged, with options from the user
one taking precedence.  Previously, if a user file existed the system one was
not checked at all.

- Instead of using conda.config the module, you must import the name config
from conda.config.  This also means that you can no longer import
configuration variables from conda.config. In other words, just replace

import conda.config as config

with

from conda.config import config

and

from conda.config import envs_dir

with

from conda.config import config
envs_dir = config.envs_dir

I played with a hack from http://stackoverflow.com/a/7668273/161801 to keep
the old API, but it did not work (I think it only works in Python 3).

There is still one configuration source that is not included here, and that's
command line options.  I will need to think about how to correctly handle them
with this new logic.