Issue #3: Refactoring ILogger

Moved extension method `IsEnabled` to the `ILogger` interface, renamed `WriteCore` to `Write` and changed the return type to void. This will break other repositories that use the ILogger interface, which I will update once I get feedback on the changes here.
If `state == null` and `exception != null` then your message will start with an empty line. Consider appending the empty line only if the message is not empty.