Configure servers as a syntactically sugared attribute map.

An alternative to my [free monad](3c2da3e0f56c5743a32d73cf2b6e4acec113eee4) approach.

Why it's better than master:
* Gets rid of the mutable builders. *spit*
* A config can be shared across backends.

Why it's worse than master:
* Capabilities not validated at compile time.  Everything must degrade gracefully.
* No obvious place to scaladoc what is and isn't supported per backend.

Why it's better than a free monad:
* More pleasing syntax for end user.
* Less boilerplate.
* Can be extended with arbitrary capabilities.

Why it's worse than a free monad:
* No exhaustiveness checking on interpreter.
* No possibility to build more complex flows... which we haven't thought of yet.