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.