Added flatten option to modifier

The Flatten option moves each vertex in the generated geometry
to equal (perpendicular) distance away from the reference object.

Other control properties related to this operation still
need to be implemented:
  - An option to set the distance from the control object
    (either as a fixed distance, the centre of the object
    or the centre of each edge).
  - An offset for the distance (when using the object/edge centre.
  - An option to operate on faces rather than just edges
    (this should be an enum, extended to vertices in future).
  - An animatable weighting factor naturally between
    0 and 1 (though not limited to this range) where 1 is when
    the mesh is entirly flat and 0 is the original mesh.
  - A enum to apply the operation orthographically or
    perspectively.