Enormous patch for free surface framework.

This is a squash of over 100 patches that implement the ability
to do free surface calculations in Aspect within an Arbitrary
Lagrangian Eulerian framework.
Merge pull request #40 from ian-r-rose/freesurface_squash2

Enormous patch for free surface framework.