widgets: Handle smooth scroll events on the zoom slider
widgets: Simplify the zoom controls logic

- Made the UI callbacks as thin as possible.
- Get and set the zoom level by using Zoomable directly instead of
  through the _zoomAdjustment field.
- Got rid of the _updateZoomSlider hack which at this point became
  obsolete.
- Got rid of the zoomed_fitted field because it was not used anywhere.
- Removed the timeline._scrollToPlayhead() because it does not make
  sense to do that when the zoom level is changed.
timeline: Make sure the zoom level is always an int
widgets: Use the zoom slider tooltip to display the duration of the displayed timeline