LogEntry: StandardLogEntry | ErrorLogEntry

A log entry with type-safe level discrimination

When level is LogLevel.Error, the error property is available.