Add explicit logging interface

Purpose
-----------

Previous version of logger provided only global functions what is inconvenient in case if you need to operate an interface object.

Implementation
--------------------

This commit introduces explicit `Logger` interface, changes all the loggers to the `Logger`, introduces `GetLogger` - global logger while preserving the original global functions.

@r0mant @jeremyschlatter please review.
good points, see the changes