Refactored prints into logging calls and file access to use shared utility functions

``print`` calls have been refactored to logging calls using the following heuristics:

- ``rcParams['verbose']`` -> ``log.info``
- ``rcParams['debug']`` -> ``log.debug``
- ``print('[D] ...')`` -> ``log.debug``
- ``print('[E] ...')`` -> ``log.error``
- ``print('[W] ...')`` -> ``log.warn``

For the most commonly used predefined messages from ``_settings.py`` I added convenience functions in ``log.py``. The rarely used ones have been inlined.

I'll leave it at this for the moment, before this PR gets too massive :)