Take into account the projection matrix when computing the scale of the high level primitives.

To make this efficient (and arguably more correct) I also switched the
algorithm by which the scale is computed. Before it was using a strange version
of the 1 norm of the matrix. Now it uses a determinant. The resultant scale is
unchanged for uniform scalings, and a bit smaller for non-uniform ones. This
shouldn't be noticeable, I think.
Add a test for projection scale invariance of primitives