Removed unused imports.
Simplify Linear integration with cpphs.

We're really interested in a very finite set of instances because GLSL
only supports a small number of types. Enumerating these instances
specifically, lets us handle each type distinctly without having
trouble with representation re-use (e.g. a @V4 GLfloat@ vs a @V4 (V4
GLfloat)@).

The enumeration is annoyingly repetitive, but some simple string
splicing makes it manageable. Since we want to concatenate tokens, we
can't use GHC's simple CPP support, and instead must use cpphs with
the @--hashes@ option.