Split NotificationGutsManager out of StatusBar.

This CL introduces NotificationDisplayer, which is an interface
abstracting the notification displaying related functionality of
StatusBar. This is the first CL in a series of refactoring CLs breaking
up StatusBar into re-usable components. In order to keep the code
reviews a reasonable size I've had to leave a few TODOs. For example,
later I plan to pull out an interface from NotificationStackScrollLayout,
which NotificationGutsManager (and others) would use. But, then
everything would end up being pulled into the same CL so for now it's a
TODO.

Bug: 63874929
Bug: 62602530
Test: runtest systemui
Test: Compile and run
Change-Id: I482a0554aa13aefce4c48807a627cd5ecd820880
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
index 3b23a0c..8d1bb5f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java
@@ -84,7 +84,7 @@
     public interface CheckSaveListener {
         // Invoked when importance has changed and the NotificationInfo wants to try to save it.
         // Listener should run saveImportance unless the change should be canceled.
-        void checkSave(Runnable saveImportance);
+        void checkSave(Runnable saveImportance, StatusBarNotification sbn);
     }
 
     public interface OnSettingsClickListener {
@@ -409,7 +409,7 @@
     public boolean handleCloseControls(boolean save, boolean force) {
         if (save && hasImportanceChanged()) {
             if (mCheckSaveListener != null) {
-                mCheckSaveListener.checkSave(() -> { saveImportance(); });
+                mCheckSaveListener.checkSave(this::saveImportance, mSbn);
             } else {
                 saveImportance();
             }