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).
This is a bit confusing. The rename happens at the normalization pass in config.go.