Add CellBarycenter and FacetBarycenter geometry types.

Also add all geometry classes to class coverage tests,
and make ufl2dot use str(geometric_quantity) for rendering
so it's less work to keep updated.
Add new literal type AbstractSymbol.

This type is not exported to the user but can be imported from ufl.classes.
The intention is a type that the form compilers can use internally to
represent some quantity that ufl doesn't need to know the properties of.
E.g. this will only be used in the later stages of compilation and
ufl algorithms will not handle it because they don't know what it means.
Rename jacobian types to Jacobian, JacobianDeterminant, JacobianInverse.
Add CellNormal type for manifold cells. Add some missing handlers in propagate_restrictions.
Restore TensorProductElement, ProductCell, and add ProductDomain. All this is experimental and may not be functional but at least can be constructed and seems to have the right basic properties.
Merge branch 'martinal/topic-restore-tensorproductelement'
Add FacetJacobian* types and clean up some other geometry.

In particular disable types not implemented in FFC that I dont intend
to implement now after all.