Autobind parameter for declaring components

Adds a special `events` role when creating components.  This is a shorthand for binding functions to events, with the added benefit that they'll be automatically unbound when the component is removed or destroyed.  You use it like this:

```
Crafty.c("MyComponent", {
	events: {
		EnterFrame: function(){
			// this function is bound to EnterFrame
		},
		Moved: function(){
			// this function is bound to the "Moved" event
		},
		// We can give a reference to a function instead!
		Change: "_changeFunction"
	},
	_changeFunction: function(){
	 	// This function is bound to "Change" by its name, but can still be called normally as a method on the component
	}
});

```
Fix _SAT algorithm, optimize Crafty.polygon

Our current implementation of the SAT (Separating Axis Theorem) algorithm is both a bit slow and somewhat incorrect.

To improve the speed, this patch changes the behavior of Crafty.polygon to store points as a single flat array, rather than an array of smaller arrays.  This is a breaking change -- code that interacts with this (e.g. by creating collision regions) will have to be modified.  I'm pretty sure it's worth it, though.  Doing some jsperf tests indicates that dealing with a single array is much faster.

This patch also prevents the creation of temporary objects within each step of the SAT algorithm, which also increases the speed a bit.

The algorithm also seemed somewhat incorrect; it calculated the minimal overlap for each edge of each polygon, but never actually did anything with the first result.  This doesn't matter when dealing with simple rectangles, which is probably why this went unnoticed til now.

I added some tests to make sure our _SAT behavior isn't broken in the future.
Merge pull request #835 from starwed/sat-improvement

Fix _SAT algorithm, optimize Crafty.polygon
Merge pull request #834 from starwed/auto-bind-2

Autobind parameter for declaring components
Implement a webgl backend

This implements a new rendering method; using webgl to draw to a canvas.

For Crafty's built-in components, simply replacing Canvas or DOM with WebGL will enable and draw to a webgl context.

It attempts to be somewhat flexible, but is designed specifically for drawing rectangular regions.  Custom shaders could be provided by a user.

For more information on the implementation, see comments in the code and this [page on crafty's github wiki](https://github.com/craftyjs/Crafty/wiki/WebGL-implementation).
Add brfs for inlining files
Implement webgl rendering for Color component
Implement webgl rendering for sprites
Implement webgl rendering for Image components