Introduce bubble controller & friends

* BubbleController manages adding / removing / state of the bubbles,
  this is what other things should use to check what the state is.
* BubbleStackView renders the stack and deals with expanding / collapsing
  and any view stuff
* BubbleView creates the circular bubble representation and holds the
  notification entry for the bubble. BubbleStackView manages the
  BubbleViews.
* BubbleTouchHandler is where all the touch logic is, BubbleStackView
  uses and so do BubbleViews if you're dragging out a BubbleView from the
  stack to dismiss

* Adding bubbles to the screen and dismissing them are not included in
  this CL, there are later CLs including this logic

Test: manual / working on proper ones
Bug: 111236845
Change-Id: I07ae1202cc7019fcd7e00151ad3ca4a48e2e1350
9 files changed