Rework the viewport animation functions

This changes several aspects of the viewport.

- Changes pan and zoom to work with Crafty.easing. (Time based instead of tick based.)
- Makes sure the zoom animation is nice and smooth.
- Fixes a bug in how scale is treated by the DOM/Canvas renderers
- Adds a new "StopCamera" event for stopping any extant camera animation (and uses it when a new animation is requested.)
- Fires an "CameraAnimationDone" event when a camera animation completes

Along the way this fixes #163, #285, #339, and #616