improved logging

logging is now done in a way that is sane for when
sefi is used as a library. the client of the library
simply passes sefi.log.set_logger a logging object for
all the logging; otherwise all log messages are silenced.