config: explicitly specify fields and seperate config and application

This one is going to need some discussion...

Rather than using `map[string]string` for the service-specific configs, explicitly call out the fields. This will require more maintanence in the future as projects add and remove options, but it will actually make it possible to validate cloud-configs. In addition, seperate the config structures into their own package (that is the bulk of this change).
I see. I hadn't quite got there. Could you document it as a potential gotcha in the `normalizeConfig` docstring please?