Fix a bug in canvas entity implementation when flipped and rotated

Currently, the canvas context was saved separately for flipped and rotated entities, but restored only once.  This totally messes with canvas rendering!

This patch fixes this by only saving the context once if called for.  (I also added a couple of comments to the code.)

Unfortunately, we can't have canvas-specific tests in our test suite as currently implemented.
pos modifided for including object as well as tests written and documentation changed
Refactor mbr/pos, add tests to modules

- Simplify the logic for mbr() and pos() reusing objects.
- Add module declarations for the mbr/pos tests
Merge branch 'addisonbgross-abg' into develop
Merge pull request #839 from starwed/context-fix

Fix a bug in canvas entity implementation when flipped and rotated
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