Tweaky tweaky.
Added Option.fold.
Various config revampery.

1. The editor config is now separate from mode configs. Having editor config
values accessible via mode config was weird, and caused more trouble when I
tried to enhance the config system as described below.

2. Sneaky state has been moved from the config objects into state objects. This
was mainly the kill ring and numerous history rings. Declaring and accessing
them is now a wee bit less concise, but I'll take that hit in the name of
conceptual integrity. Config objects contain data that come from config files
and which are used to configure things. That's it.

3. The config system now supports a stack of config repositories. Presently
that's a global repository and a repository for each workspace. If a setting is
not specified at one level of the stack, we use the value provided by a level
further down. If we get to the bottom of the stack and no one has specified the
value, then we use the default. The machinery is now in place to allow the
project package to add a per-project config repository, which will allow
customization on a per-project basis of things like how many spaces to indent,
which was the motivation for this whole damned adventure in the first place.

Before I can wire that up, I need to add a mechanism for packages to hook into
the buffer creation process. The project package needs to slip its config repo
into the buffer state before the buffer's modes are resolved so that they see
the correct configuration from the start.