There is a ton of room for optimization here. The vector layer renderer should only render dirty areas and could maintain a cache of rendered canvas tiles. The vector source could have a simple spatial index for features (by tile coord). Need to also discuss how to work with this animation framework (to avoid the excess work while waiting for tiles to load on every other layer).
Currently only renders points as circles. Eventually will have methods for other geometry types and other symbolizer types. Also provides static methods to render point symbolizers (returning a canvas that can be drawn on another).