Added several features and refactored program.

- Some progress is now shown (via print statements. Actual logging to
come!)

- Completely refactored application to have a more consistent form and
better coupling between components.

- App is configured entirely via config file (see config/config.yml)