An abstract projection class and child mercprojection class

Generally agree, but there are still cases where you want to refer to & project or un-project a particular point in screenspace. On the WebGL side, I track "CSS pixels" (which are "logical" pixels), and "device pixels" (which are the 2x or 3x ones). We don't need to do that here but we do need a way to transform the position of an individual pixel.