Initial support for quadrilateral meshes

What is included?
 * Support for reading quadrilateral meshes from supported mesh file types
 * Utility quadrilateral mesh creation
    * Boundary subdomains are supported
 * Cell integrals
    * Higher-order CG
    * HDiv and HCurl elements (manual assembly required, just as for extruded meshes)
 * Test cases for the above
 * Visualisation output

What does not work yet?
 * Facet integrals
 * Non-affine mesh elements
    * Firedrake will gladly accept and solve quadrilateral meshes with non-affine elements, however, it assumes constant Jacobian over each cell, which hurts accuracy pretty badly when this assumption is false.
 * Extruded quadrilateral meshes
 * Immersed quadrilateral meshes (not tested)

Ummm, I thought on extruded meshes we have `(base-codim-1, 1)` facets and `(codim-0, 0)` facets.  IOW, this should be `[(2, 0), (1, 1)]` in 3D and `[(1, 0), (0, 1)]` in 2D.  Additionally, this is not a property of the gdim, but rather the tdim, consider, for example:

```python
m = CircleManifoldMesh(...)
m = ExtrudedMesh(m, layers=2, extrusion_type='uniform')
```