Logging enhancements.

This PR migrates all log functionality into python logging framework.

It introduces 3 loggers:
- GUI logger: for messages originating from GUI 
- resource usage logger: for resource profiling/timing info
- generic logger for all else

The GUI has controls to:
- display log messages (instead of printing to console)
- setting of log levels
- switching on/off logging of resource usage

The configuration file has options:
- `profiler_log_file`: file to log timing and `rusage` profiling results, If not set, streamed into `log_file` or console.
- `log_file`: file to log regular log messages. If not set, streamed onto console.
- `screenprint_log`: whether to print logs onto console (stdout). `False` by default.
- `log_level`: one of `FATAL`, `ERROR`, `WARN`, `INFO`, `DEBUG` (default)

Logging is switched off completely if no log files are set and `screenprint_log` is `False`.