Explain the config system

There's a lot of confusion about the `config` system, so this PR is an attempt to explain it through an example notebook.

It also contains a few changes to `config.py` to make things more clear and/or correct. Once we're agreed upon some of the details of the code, I'll split those changes into a separate commit.

For the time being, please check out [the rendered notebook](http://nbviewer.ipython.org/urls/dl.dropboxusercontent.com/u/6182929/config.ipynb) and give me some feedback on what makes sense and what's confusing.

Additionally, this PR should figure out the appropriate `__str__` methods for `Config`, `ClassParams`, and `InstanceParams`. You can see in the notebook how I envision these being used, but I think there's also an argument to be made for what @hunse implemented (see `config.py`, line 80 and 179) and making what I printed out a different attribute of these objects (e.g., `config.all` or something).
I would say "traversed from the bottom up", to be clear.