wrap finite element creation to support quadrilaterals
make _dofs_per_entity calculation quad-compatible
cell_node_list for quadrilaterals
refactor entity_dofs flattening
quadrilateral utility mesh creation
fix boundary domains for quadrilateral meshes
fix output for quadrilateral meshes
solve edge orientation problem
test cases for quadrilateral meshes
FunctionSpace-independent _cell_closure calculation
introduce QuadrilateralMesh class

A later commit may render the following invalid:

mesh.Mesh(..., cellname="quadrilateral")
refactor cell_node_list creation

The affected code snippet is a canonical code smell (Switch Statements
[1]). Further details, for example at [2].

[1] http://c2.com/cgi/wiki?SwitchStatementsSmell
[2] http://sourcemaking.com/refactoring/replace-conditional-with-polymorphism
refactor cell_closure
refactor facet_dimension for boundary treatment
prevent incorrect quadrilateral mesh creation
add documentation
fix rectangular quadrilateral mesh creation
style and documentation fixes

Thanks to @kynan.
Revert "prevent incorrect quadrilateral mesh creation"

This reverts commit 86fa9aabe822f3923b60ccb265f8801ea0bf293d.
refactor cell type detection

- Eradicate cellname optional keyword argument
- Redefine fiat_utils._cells to use topological dimension instead of
  geometric dimension