Beyond image tiles

This pull request allows tile layers to be composed not just of Images, but also HTMLCanvasElements, or even HTMLVideoElements. It lays the groundwork for tiled vector layers rendered in canvas on the client.

Note that it is based on #97 and #98 which should be merged first.