Create a DemoMode controller

Pull Demo Mode out of StatusBar.java and create a subscription /
callback model. This reduces the number of broadcasts needed by
StatusBar and also enables for demo mode:

- clean state tracking (dumpsys DemoModeController)
- We can fix bugs like state initialization (entering demo mode on in
dev options has a different effect than entering via broadcast, etc).
- We can more easily implement it as a command line interface (available
for preorder today!)

Bug: 163393864
Test: atest SystemUITests; manual demo mode testing
Change-Id: I70535aeca3478a42b1ebb668822346e23854379f
56 files changed