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