Handle device change actions in mist udev rules.

This CL modifies the mist udev rules to also handle device change
actions such that, in absence of an add action, we can still perform
appropriate actions on a supported device upon receving the first change
action on the device.

BUG=chromium:275952
TEST=Tested the following:
1. Build and run unit tests.
2. Insert a supported 3G dongle and verify that mist is invoked to
   switch the dongle into a modem. Also verify using the following
   command that udev sets MIST_SUPPORTED_DEVICE=1 on the dongle device
   when it's added to the system and after it's switched to a modem:

   udevadm monitor --property --subsystem-match=usb/usb_device

(cherry picked from commit 556df81458029dbd31916e8d2d628c5c9fcd0ef9)

Change-Id: Ice4615754041262e7abd147b4fa7868b8a6b3514
Reviewed-on: https://gerrit.chromium.org/gerrit/66623
Commit-Queue: Ben Chan <benchan@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
diff --git a/51-mist.rules b/51-mist.rules
index 614f9e7..55fbc15 100644
--- a/51-mist.rules
+++ b/51-mist.rules
@@ -9,7 +9,11 @@
 # Extract the vendor/product IDs of supported devices from default.conf and
 # creates corresponding udev rules in this file.
 
-ACTION!="add", GOTO="mist_end"
+# If MIST_SUPPORTED_DEVICE is set to 1, the device has already been handled once
+# due to a prior udev add or change event.
+ENV{MIST_SUPPORTED_DEVICE}=="1", GOTO="mist_end"
+
+ACTION!="add|change", GOTO="mist_end"
 SUBSYSTEM!="usb", GOTO="mist_end"
 ENV{DEVTYPE}!="usb_device", GOTO="mist_end"