Configurable NAS by using DeviceConfig

The latest plan is only system apps with a certain privilege permission
could become NAS. And DeviceConfig could specify any of these valid
candidate to be the default NAS.

So the logic would be like this:
1. If user has set the NAS manually, NMS will persist the user_set bit
   and never mess with it.
2. If it is not the case, NMS will try the NAS defined in DeviceConfig,
   and then the one defined in config.xml

Also added some new shell commands for easy debugging.

Test: atest NotificationAssistantTest.java
Test: atest NotificationManagerServiceTest.java
Test: Use "device_config put" command to set a valid one. Observe that
      NAS is updated and persisted across reboot.
Test: Repeat the command with an invalid one, observe that NAS is not
      updated.
Test: Go to settings, set a NAS, and repeat the device_config command,
      observe that NAS is not changed.
Test: Go to settings, set NAS to be none. Reboot the device, and "none"
      is persisted.

FIXES: 123566150

Change-Id: Ibf8e498944afd5d1fa8659a856a8abdcce41f092
9 files changed