Added support for mixing WebGL context inside a layer.

Canvas uses 2d context by default, it doesn't allow for optional
configuration. This creates conflicts with WebGL (e.g. with three.js
library).

For this to happen, an additional configuration parameter was necessary for both Kinetic.Canvas and for Kinetic.Layer. In the former case, a constant string was replaced, and in the latter case you can supply your own "canvas" (a class inheriting Kinetic.Canvas).