Store content offset in unscaled pixels

This is necessary because the renderer pre-scales the scene when
applying content offset. We also store a scene scale instead of a scene
transformation, so that we know how to properly deal with device pixels.
Also ensures that content offset is not accumulated when rendering
layers.