Required config.yml keys complain when missing

- Adds end-to-end spec
- Refactors Publisher et al.
- Protects against missing or empty config.yml
Runs $ bookbinder integration test in a siloed directory

- Loads source correctly irrespective of where the $ bookbinder is called
- Cleans up CLI's interpretation of config.yml