implement the first iteration of the logger
This introduces the logger, the main features are different logging levels (Normal, Error and Debug) as well as automatic logging into stdout/stderr respectively as well as into a main logging file (olives.log) for the Normal/Debug messages and an error file (olives.err.log) for the Error type log entries. Using it looks something like this:
std::string message = “Renderer: Could not create logical device”;
logger->logError(message);
throw std::runtime_error(message);