Programmatic Canvas Zooming

As per https://github.com/kangax/fabric.js/issues/731

Adds `viewportTransform` matrix to the canvas with `setZoom` and other associated methods. Works with controls, textures, brushes, mouse interactivity, and so forth.