Refactor elapsed

This removes all the FlxG.elapsed invocations deep in the bowels of the code and instead passes the elapsed time down through update() cycles. By default the core engine passes in FlxG.elapsed.

Also, FlxSprite now has separately overrideable updateMotion() and updateAnimation() functions.

This closes this issue:
https://github.com/HaxeFlixel/flixel/issues/1188
Not a fan of passing an optional param to this function. Null<Float> are essentially Dynamic objects, which are much slower than statically typed objects. For any other function I would have no problem, but this one gets called once per moving entity in the game, so I prefer to keep its implementation as fast as possible.