Do not remove DOM element when dismissing an item.

When dismissing we now delete the item from the fakeData. For doing so
an id is added to all items.

After that we refresh all the items.

Also, make sure items visually after the dismissed item are moved up

The visual order is not necessarily the same as the DOM order as
the children can be split into two groups with different y
transform.
Make animateHeightOnDismiss remove items from the dataset as well

Like the dismissItem, 'animateHeightOnDismiss' now also removes
the dismissed item from the fake dataset.

The code has been separated out in the dismissItemAnimateHeight
method similar to the dismissItem one.
Separate the concerns of the dismissal from the data and ScrollingEngine

The app-dismissable-list now fires a 'dismiss-items' event, which is
hooked up to the data provider. When the data provider is changed it
sends out a custom event 'data-changed' which is ScrollingEngine
listens to.

For this to work a proper FakeDataProvider object has been created.
Better handle dismissing of items

This is based on the behavior on Android
- Collapse only happens when all ongoing dismissals have been
  either cancelled or completed.
- Do not allow dismissing items while running collapse animation

For the above to work the DismissController has been enhanced
with the ability to deactive it (ie not allow dismissing items
during animation) as well as gotten a callback when a dismiss was
cancelled, and when the user started a potential dismissal.