Programmatic Canvas Zooming

New PR for this. I believe the remaining test failures are problems upstream already has. ToSVG now respects the viewport transform, as @kangax suggested.