Split conversation and router config classes.

Currently conversation and router config classes share too much infrastructure (and the infrastructure is rather hacky). This splits things up more and cleans things up a big. A further goal is to allow applications more control over how conversation config is translated into application config.