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)

Arguably maybe ValueError rather than RuntimeError? But in firedrake we don't use anything other than the standard python exceptions, so I'm not that fussed.