- read_to_end + from_utf8_lossy replaces read_to_string so Wine/game logs
with Latin-1 bytes are handled via U+FFFD replacement instead of silently
dropping all events from that file
- bytes_read from I/O call used for new_pos (not content.len()) for correct
byte position accounting
- spawn_blocking handle is now awaited so panics inside the blocking task
surface to the caller instead of being silently swallowed
Replace flat watcher.rs with watcher/ module containing mod.rs plus stub
sub-modules for journald, kmsg, and inotify. Upgrades spawn() to accept
log_paths and return mpsc::Receiver<SystemEvent>. Updates lib.rs call site.