Fix how drawing code handles scale

The existing draw code doesn't take into account that the scaling happens before translation.  This patch fixes that by multiplying the translation by the current scale.
Rework several viewport animation functions

- Changes pan and zoom to work with Crafty.easing. (Time based instead of tick based.)
- Makes sure the zoom animation is nice and smooth.  (Surprisingly tricky)
- 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

Fixes #163, #285, #339, and #616
Merge pull request #648 from starwed/viewport-fixes

Rework the viewport animation functions
Twoway requires Gravity; Gravity and Twoway trigger 'Moved' events
Merge branch 'heniotierra-develop' into develop