Reworked configuration system

This is a work in progress, but I wanted to put it out here for comments since the Dan's defaults system is nearly ready to merge. This is designed to be complement it by enabling the default system with (hopefully) less syntactic baggage and boilerplate as with the previous config system.

This also shows how the config system can be exposed through the new pluggable builder. My intention is to make optimization / validation done this way, by adding validators / optimizers to the top-level network config.

There are still some issues with this system, the most important of which is how class configuration differs (or should differ) from instance configuration, but I think this is going to be easier to extend moving forward.