Extract existing configuration subsystem into this.

Write a few tests.

Refactor so apps store the directives, not the configuration object.

Refactor so that registries are many and can be scoped to directives. *


The apps need to store the actions, not the configuration object.

This allows us to commit for a given number of apps. We also can
automatically commit for all apps.

Committing for an app should automatically also commit for its base app.

Need to separate configuration machinery from Configurable.

Should Configurable be called Configurations? Probably not; we just
create an instance we call Configurations.

Configurations contains info on bases, actions, and sub-objects that
contains the actual configured registries.

The *config* will contain the apps to commit.


all configurables are executed.

the commit first in the prepare phase adds actions the configurable,
grouping them.


the configurable execute does:

groups actions, which results in Actions objects.

then for each action class it will prepare the actions object and perform
it.


There is a notion of configurable that keeps information
about processed actions.


We still get a base App without testing_config in use. Make what
apps we commit explicit. And maintain a global list of apps we've
seen for automation.

