Improve HeadsUp [1/2]

Rework stock behaviours.

* Don't show if we're on expanded status bar, right?
* Ensure there is a strong reparenting since we are manipulating now,
  avoid blank notifications, broken clicks and other evil cases.
* Add some comments
* Add experimental settings to enable rich non-noisy notifications that have
  a not empty ticker. Stored in Developer options.
* Add multiuser support, provide a system setting to override heads up
  showing. User can disable heads up within this one so we don't need to
  mess with Settings.Global heads up dependencies and break Google wide
  implementations like priority filtering etc.
* Check if view is attached/detached before removing/adding it, even if the
  workflow shouldn't face this issue (it's handled by a single observer) but
  better be safe i guess, doesn't hurt :) And if we somehow add Theme Engine
  or whatever needs status bar recreating this will come handy.
* Add FLAG_WATCH_OUTSIDE_TOUCH, since we manage outside touch events.
* Hide heads up after 1.0 second on touch outside and/or on home button
  pressing (more specifically when animateCollapsePanels() is called).
* Rework Edge swipe helper, don't, for UX sake, expand status bar when we
  swipe down from top and heads up is showing. Leave stock handling there only
  for debug case, on swipe up just HIDE the notification, don't dismiss it too.
* Code Cleanup.
* Use HEADS_UP_REQUESTED extra. See https://gerrit.slimroms.net/#/c/19496/
* Don't show heads up while IME is showing.
* Other little miscs.

Signed-off-by: @BigBrother1984 <carlosavignano@aospa.co>
Change-Id: Ie7eff5934331f3ea995cac05c61b12eaf654fd26

Conflicts:
	core/java/android/provider/Settings.java
	packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java