[spaces.dg.pdelab] restrict to polorder 1

See the note for reasons and for ways to explore..., refs #10
[spaces.fv.default] minor fix
[spaces.rt.pdelab] added pattern()
[spaces.rt.pdelab] minor fix and whitespace
[cmake] whitespace
[test.spaces] major rewrite

The grid types, grid part types and grid view types are now defined in
grids.hh, while spaces.hh only provides SpaceBase. For each type of space
and each backend there is now a header space_type_backend.hh defining valid
spaces, i.e. SPACE_CG_FEM_SGRID(dimDomain, dimRange, polOrder) in
spaces_cg_fem.hh. There is also one header per space type defining
a common base for this space type, i.e. spaces_cg.hh. These two are used in
the test sources for each type and backend which follow the same naming
style, i.e. spaces_cg_fem.cc. This makes it overall easier to reuse grid
and space definitions in other test and to keep the number of template
instantiations per test as low as possible. In addition :
* fixed some FloatCmp problems in the dg and cg test
* FV_Space in spaces_fv.hh does not yet test anything finite volume
  specific
* RT_Space in spaces_rt.hh does not yet test anything raviart thomas
  specific
[assembler.system] whitespace
[products] complete rewrite, WARNING: this will creak your code!

This commit introduces a complete rewrite of the products. If you are just
interested in the consequences for using products: see the next commit to
get an idea of the changes you need to make in your code.

As before products/base.hh provides LocalizableBase, AssemblableBase and
now GenericBase. These classes fully implement their respective
Interfaces given a helper class LocalOperatorProvider. This class has to
be provided for each type of products, i.e. once for an L2 product (see
products/l2-internal.hh), once for an elliptic product
(see products/elliptic-internal.hh), ... This class has to provide a
protected member local_operator_ which is used in the base classes and some
types that are used in the base traits in products/base-internal.hh. For
each type of products one has to add a small class combining this
local operator provider with the appropriate base product, see for instance
L2Localizable or L2 in products/l2.hh. The local operator provider classes
are really necessary since they are the ones creating the arguments to the
local operator (the local operator could have been created in the base
class but the necessary data functions are unknown there). The final
product classes combining the local operator provider with the base product
is not strictly necessary. But since those are around twelve lines of code
and very simple I would like to keep them to have a good place for
documentation (especially for documenting the respective ctors, the
arguments of which might not always be straightforward). I did not try to
maintain any backwards compatibility or header forwards since some things
will break because of this anyway: given the implementation of the base
products and their forward to the local operator provider all arguments
for the base have to be given first, i.e L2Weighted(grid_view, factor).
In addition:
* renamed H1SemiGeneric -> H1Semi to match the other products
* moved elliptic product from playground
* changed the order of ctor arguments (s.a.): always the ones for the base
  product first, i.e. in Products::Elliptic:
  diffusion, grid_view -> grid_view, diffusion
* changed the order of template arguments to match the ctor arguments
  where possible, i.e. in Products::Elliptic:
  DiffusionType, GridViewType -> GridViewType, DiffusionType
* over_integrate has to be given to the ctor now and not to apply2()
[test.elliptic...discretization] updated product usage

This commit might give you a hint if you are wondering what you have to
change in your code to adapt to the new products.
[test.products] major rewrite

This commit introduces specific tests for the products, independent of the
operators. Now there are ProductBase, LocalizableProductBase and
AssemblableProductBase in test/product.hh to be used by any product test.
For each kind of product there is an additional header building on top of
that (i.e. test/prodcuts_l2.hh) that tests for mathematical correctness.
This is done by a base class for each kind (i.e. WeightedL2ProductBase in
test/products_l2weighted.hh) with checks for constant, linear and
quadratic functions and a pure virtual compute() method that has to be
implemented by each product test (i.e. WeightedL2LocalizableProduct,
WeightedL2AssemblableProduct, WeightedL2Product). The test sources then
merely combine these together with spaces of appropriate order.
[test.products] major rewrite

This commit introduces specific tests for the products, independent of the
operators. Now there are ProductBase, LocalizableProductBase and
AssemblableProductBase in test/product.hh to be used by any product test.
For each kind of product there is an additional header building on top of
that (i.e. test/prodcuts_l2.hh) that tests for mathematical correctness.
This is done by a base class for each kind (i.e. WeightedL2ProductBase in
test/products_l2weighted.hh) with checks for constant, linear and
quadratic arguments and a pure virtual compute() method that has to be
implemented by each product test (i.e. WeightedL2LocalizableProduct,
WeightedL2AssemblableProduct, WeightedL2Product). The test sources then
merely combine these together with spaces of appropriate order.