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).
No. Two issues.

1 - I couldn't figure out a concise way of writing `a := &"hello"`
2 - If you parse `hostname:`, YAML interprets that as `hostname: null` which is the same as ` `.