WebBridge.findModem() iterated _G.device with pairs() which has
non-deterministic order. On computers with both wired and wireless
modems, it could return the wireless modem while the manager uses
a wired modem - messages never cross the wired/wireless boundary.
Now uses two-pass iteration: first looks for wired modems, then
falls back to any modem. Peripheral scan fallback also prefers wired.
Backward-compatible: boolean arg (preferWireless) still works.
- Add Channels.match(name, ch) for dual-mode event filtering
Returns true if ch matches any active channel for the logical name.
In dual mode, matches both legacy and target channels.
- Switch default channelMode from 'current' to 'target'
RT channels now resolve to 4210-4213 instead of legacy 100-103.
- Config default also updated so fresh installs start in target mode.
- Rollback to 'current' mode still supported via setMode().