Use a template for the app drawer menu items
Merge pull request #2 from arv/build-app-drawer-on-demand

Use a template for the app drawer menu items
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 sure to reset position in DismissController

Reset when start and ending a touch gesture.
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.
Fix animation bug with restrictToBound

Get rid of the method and make sure that targetFraction never
grown beyond 1.0 instead. This also allows for animation curves
with an over/under flow bounce effect.

restrictToBound was not considering the start position when
determining the animation direction, which broke the collapse
animation for items with a y-transform different from 0.

Also fix spelling bug s/collback/callback
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.