Make audio.play() return the audio element used to play the sound
Fix bug when using Crafty.audio.stop on a specific sound
Refactor animation.js to use a time based rather than frame based approach.

Crafty.easing
---------------
- A new object `Crafty.easing`; it abstracts the concept of a state that changes over time.
- Used in the new "Tween" and "SpriteAnimation" components; can also be used when we fix the viewport animation functions.
- No public documentation right now, since it's for internal use.
- Added tests in core.html

Tween
---------------
- Uses the new easing object
- Now treats a set of properties to tween as a group, only sending one "TweenEnd" event per group
- Removes some special handling for mouse events that I'm pretty sure is already handled by how the "2D" component works.
- Updated the docs and added tests in core.html

SpriteAnimation
---------------
- Uses the new easing object
- Refactored the interface completely.  Uses `reel()` to set and change reels, `animate()` to play them.  Favors composable single purpose methods over tons of optional arguments.  See documentation/source/tests for full details.
- The duration of an animation is now set in milliseconds when creating a reel, instead of in frames when playing it.
- Updated the docs and tests in animation.html
Merge pull request #583 from starwed/animation-overhaul

Refactor animation.js to use a time based rather than frame based approach.
Fix, for applying a flat array to a rotated model

The evaluation order was incorrect if you passed in a flat array for the collision area if the model was already rotated.
Merge pull request #612 from samccone/sjs/fix-collision-area

Fix, for applying a flat array to a rotated model
New event on hitbox change; lets debug components auto-match the hitbox
Fix off-by-one error in both animation.js and tests
Merge pull request #610 from starwed/audio-augment

Add a bit of functionality to Crafty.audio (.play() returns the audio element)
Merge pull request #613 from starwed/newhit

New event on hitbox change; lets debug components auto-match the hitbox
Merge pull request #614 from starwed/anim-fix

Fix off-by-one error in both animation.js and tests
Logic error in "DebugPolygon"

Currently it iterates through the designated polygon, but uses the equivalent points in the hitmap for drawing.  This can cause errors when they're not the same length.
Merge pull request #615 from starwed/poly-fix

Logic error in "DebugPolygon"
Gravity collision detected only on top.
Merge pull request #592 from pawurb/smoothier_collisions

Gravity collision detected only on top.
Fix Crafty.math.randomNumber documentation
Merge pull request #618 from potomak/feature/fix-math-documentation

Fix Crafty.math.randomNumber documentation
Make "Text" work better with canvas

The major change is that a "Canvas, Text" entity will automatically resize when either its font or text are changed.
This is accomplished by using measureText() to get the width, and estimating the font size in pixels for the height.
Currently the width is adjusted *after* drawing, and the height not at all.  This often caused the text to be rendered with portions cut-off.

Text is now also drawn at the (x,y) coordinate of the entity, with the baseline set to "top".  Previously text was translated to the bottom left corner of the entity, resulting in descenders getting cut-off.

Tests were added for the new resizing feature.
Merge pull request #620 from starwed/text-resize

Make "Text" work better with canvas
Fix bugs in stage.html centerOn

This fixes a couple of bugs in the centerOn tests.
- Expected values of viewport x/y will be integers
- clampToEntities needs to be turned off for one of the tests to work

Both of theses issues were invisible in phantomJS due to the default viewport size.