hbm-minigbm: ensure logger always has valid callback
use LazyLock to ensure the LoggerState always contains a valid callback (even if it is just a stub). Then we can avoid using an Option and unwrapping it when we expect it to be Some() at all times.
Still need the Once to do one-time-only logger registration.
Adds log file buffering + flush() implementation
Adds unit test for basic logging behavior and log level filtering.