Serial transports defaulted to isPermanent=true for any disconnect path,
including USB unplug and port-open failure. Both conditions can resolve
without explicit user re-selection: replug, OS re-enumeration, permission
grant. Only an explicit close() (user disconnects) is a true permanent
disconnect.
- StreamTransport: flip onDeviceDisconnect default isPermanent to false;
close() now passes isPermanent=true explicitly.
- SerialRadioTransport (Android): pass isPermanent=false explicitly on
USB unplug callback path.
- SerialTransport (JVM): flip both the open-failure path and the read-
loop teardown to isPermanent=false; both are recoverable conditions.