stopBleScan

Cancels the active BLE scan and resets the scanning flag. Idempotent.

Bumps scanGeneration so any in-flight finally from the cancelled job cannot reset _isBleScanning after a subsequent startBleScan has flipped it back to true.