levels and delegates for logging

avoid unnecessary compute when logging not set for the given level
Set NullLog for tests
Added logger level and controls to test ui
exception not passed to logger any more

at this point the  exception is set and the process stopped, its up to
the caller to descide what to do
IListener start and stop added

allows for reuse
comment corrected
adding a logger