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)

I think it can be refactored into the canonical form with __new__, by turning _from_exodus, _from_cgns, _from_gmsh and _from_triangle into static methods which return a plex object, turninig _from_dmplex into __init__ which initializes from a plex object, and putting the rest of the glue code (including whether to create a QuadilateralMesh instance) into Mesh.__new__. However, we don't have test coverage for _from_exodus and _from_cgns, I'm afraid I might break these during refactoring, and they would go unnoticed.