A device name is display-only, but three code paths decode it strictly
and raise UnicodeDecodeError, aborting the whole operation:
- handle_device_discovery: crashes 'solaar pair' during Bolt discovery
- BoltReceiver.device_codename: crashes 'solaar show' and 'solaar unpair'
- get_friendly_name: crashes 'solaar show' after device enumeration
Observed in the wild with an MX Master 3S whose user-writable friendly
name field contained 0xc3 0x23 (invalid UTF-8). The Bolt receiver copies
this name at pairing time, so the bad bytes surface from both the
receiver registers and the live HID++ 2.0 feature, making the device
impossible to pair, list, or unpair with Solaar.
Decode with errors='replace' so a garbage name renders as replacement
characters instead of making the device unusable.