initial for-real edge deformation

& consequentially face calculations as 8 tris instead of 1 quad
reversed the order of the lighting and deformation steps

(so deformation is done before lighting, so lighting uses the correct
normals) there were also _substantial_ structural changes because of
this, mostly XQuad storing a fifth value (its normal) and CellFace taking
a type argument (usually an XQuad)

there's some weirdness with the quadPlane/quadNormal functions (why have
functions to calc this when the value ought to be stored in the type) but
i figure i'll eventually resolve that
reduced number of abs calls in pointInQuad'

this _probably_ doesn't do anything when the code's optimized but it
couldn't hurt