[CrOS Tether] Disconnect cleanly from active Tether networks when the user logs out or the Tether component is killed.

Under normal circumstances, when a user disconnects from a Tether network, we start up an asynchronous connection flow. However, when these two edge cases occur, the Tether component is destroyed synchronously, and the full disconnection flow cannot complete (namely, the old Wi-Fi network supporting the Tether network is not removed). This CL fixes this problem by persisting the disconnecting Wi-Fi network GUID and removing it next time the Tether componentn starts up.

This CL also:
(1) Changes TetherDisconnector to an interface and moves the implementation to TetherDisconnectorImpl to make testing easier.
(2) Updates the shutdown flow for the Tether component by leaving the Tether TechnologyState intact during shutdown to prevent UI jank.

BUG=672263

Review-Url: https://codereview.chromium.org/2975483002
Cr-Commit-Position: refs/heads/master@{#486072}
12 files changed