Remove interval.py

No longer needed, since we build intervals in memory.
Remove gmsh2triangle.py

No need for it any more.
Split core_types.pyx into parts and remove

The naming was a legacy of Fluidity interfacing, it makes more sense to
split its pieces into functional parts and migrate them to appropriate
other modules.
Update gitignore
Move function space classes to separate module
Move Function and Constant to separate modules
Move Matrix type to separate module
Move Halo type to separate module

We can now remove firedrake.types.
Rationalise module imports in firedrake modules

Third-party things first, then pyop2 imports then firedrake
imports (alphabetised).
Avoid from foo import bar between different firedrake modules

To avoid circular loads, firedrake modules now always import other
firedrake modules directly, rather than importing names from them.  The
exceptions are the parameters and petsc modules (which do not themselves
import any other modules).
Minor doc linking/formatting fixes