Refactor geometry.py a bit.

Extract cell stuff to cell.py.
Extract domain stuff to domain.py.
Simplify type declarations by moving common implementations to
geometric quantity base class.
Add some new types for geometry on reference cells.

Renamed LocalCoordinate to ReferenceCoordinate.
Rename LocalGrad to ReferenceGrad.

Added some comments around unused derivative rules.

Sketch of change to reference coordinate quantities algorithm.

Minor simplifications of types by removing some functions that have a sensible default behaviour.
Some work on updating dates.
Finish addition of type CellOriginCoordinate.
Move the horribly ugly compound expressions from expand_compounds to their own compound_expressions.py.

Using these functions in the first iteration of change_to_reference_geometry to compute det and inv of Jacobian.
Add CellNormal and CellOrientation types, implement symbolic
computation of facet_normal in change_to_reference_geometry.

This algorithm has not really been tested and must be validated
for each case it covers: 3D cells, 2D in 2D, 2D in 3D.
Possibly some other cases can be added as well.