Add unique and onetime binds

* . bindUnique() prevents the same event from being bound more than once
* .one() removes the event once it is triggered
Both "global" and entity specific versions exist.  Also adds qunit tests for binding/triggering.
Add the ability for components to run a special function on removal/destruction

Allows components to define a remove method that work similarly to init.  It will be called when the entity is destroyed or the component is removed.  It's passed a boolean flag that is true on destruction, false on simple removal.

This patch also moves the trigger of "RemoveComponent" so that it occurs before the component is removed, instead of after.
Drive-by fix to remove global from debuglayer
Changes to how _attr cascades
* Uses the actual object position instead of the MBR
* Create a rectPool to improve performance by recylcing rectangle objects
Update README.md

Add syntax highlighting to code example
Make 2d comparison functions consistently use _x style properties

Modifies isAt, contains, and within to accept objects with _x style properties, such as MBRs.  (Fixes #504).  Would break code that passed manually constructed objects with old-style properties.

Adds a couple tests to better catch issues with MBRs and within/contains.
Merge pull request #503 from starwed/pool

Changes to how _attr passes change information
Merge pull request #501 from starwed/destruction

Add the ability for components to run a special function on removal/destruction
Fixed comment error of Crafty.getVersion
Merge pull request #506 from jumpcoder/develop

Fixed comment error of Crafty.getVersion
Merge pull request #505 from starwed/fix-2D-MBR

Make 2d comparison functions consistently use _x style properties
Fix some issues with one() and trigger()

* Removing an event in the middle of trigger's loop caused problems -- this changes how events are unbound.  Instead of being spliced out of the array on unbind, the entry is deleted.  When deleted entries are encountered by trigger, they are spliced out at that point.  If event triggers are "nested" there could still be issues with removing events.
* Fixes one() so that event data gets passed on correctly
* Adds tests for both these issues
Scale sprites on DOM entities

This patch uses the CSS3 background-size property to scale sprites on DOM entities.  It should work on IE9+, but not IE8 or below.
Merge pull request #500 from starwed/comp-enhance

Add unique and onetime binds; change how unbind is implemented

This might break code that both unbinds and triggers an event in a callback invoked by that same event.
Merge pull request #507 from starwed/sprite-scale

Scale sprites on DOM entities
Fix global in test 'remove'
Merge pull request #509 from starwed/fix-test

Fix global in test 'remove'
fix PHP warnings while running build-api.php

this commit fixes #475
Merge pull request #511 from BradDenver/develop

fix PHP warnings while running build-api.php
Initial integration of grunt tasks