ClientModeImpl: Disconnect if network is marked metered

1) If the network is marked metered from unmetered/none by either the
app or user post connection, trigger a disconnect to ensure that all
apps re-read the meteredness of the network (when connected back again).
2) If the network is marked unmetered/none from metered by either the
app or user post connection, just update the network capabilities.

Also,
a) Modified the onNetworkUpdated() WifiConfigManager callback to include
both the previous and new config to help clients compare what has changed.
b) If a suggestion is being updated and the network is cached in
WifiConfigManager (either because we're connected to that or was connectable
in the recent past), trigger an immediate update of configuration. This ensures
that any metered changes take effect immediately.
c) Similarly for passpoint networks cached in WifiConfigManager, trigger
an immediate of configuration. This ensures that any metered changes take
effect immediately.
d) Removed update of existing config in NetworkSuggestionNominator which
is redundant with (b)
e) Ensure that all configs sent out from WifiConfigManager callbacks
have their passwords masked to ensure they're not accidentally sent out
of the stack.
f) Added a shell command to just add/update network config without
triggering a connect immediately.

Bug: 153127005
Test: atest com.android.server.wifi
Test: Manual steps
Suggestion Metered change (unmetered->metered):
adb shell cmd wifi add-suggestion <ssid> open
adb shell cmd wifi start-scan
adb shell cmd wifi status -> connected as unmetered
adb shell cmd wifi add-suggestion GoogleGuest open -m
adb shell cmd wifi status -> disconnected
adb shell cmd wifi status -> connected back as metered
adb shell cmd wifi add-suggestion GoogleGuest open
adb shell cmd wifi status -> remained connected, but changed to unmetered

Saved network Metered change (unmetered->metered):
adb shell cmd wifi add-network <ssid> open
adb shell cmd wifi start-scan
adb shell cmd wifi status -> connected as unmetered
adb shell cmd wifi add-network GoogleGuest open -m
adb shell cmd wifi status -> disconnected
adb shell cmd wifi status -> connected back as metered
adb shell cmd wifi add-network GoogleGuest open
adb shell cmd wifi status -> remained connected, but changed to unmetered

Change-Id: Id313a302dc529fcafa8e2d1a8442f748896cab89
14 files changed