Cylindrical projection shader for panoramic screens

The code duplication between this shader and the standard default one is
a bit of a mess - needs some refactoring.  This is theoretically right
but needs testing on an actual panoramic screen.