[GridFunctionSpace] Store OrderingTag instance in GridFunctionSpace

Just as with the Backend, there are scenarios where it is convenient to pass not
only compile-time, but also run-time data to an Ordering. So this patch changes
the GridFunctionSpaces to store an instance of the OrderingTag and make it accessible
through orderingTag(). It also adds new constructors to provide a custom OrderingTag
instance to the GridFunctionSpace, but also makes sure not to break existing code by
default-instantiating the OrderingTag if it is not passed explicitly.
[Ordering] Move update_direct_children visitor to utility.hh and into ordering namespace

The functionality of update_direct_children is required by all non-local composite orderings,
so move them to utility.hh. As it is a utility component, it's probably also a good idea to
move it into a subnamespace to reduce the risk of name clashes and to hide it from DOXYGEN,
so do that as well.
[Ordering] Move transformation setup to dedicated header file

The main benefits of this move are less clutter in the ordering files and having all of the
transformation registrations and descriptor declarations happen only once instead of once per
ordering. As they are only declarations, they are allowed to appear more than once, but that
just cries out for problems if they ever need to be changed.
[GridFunctionSpace] Move gfs_to_lfs descriptor to gridfunctionspace/tags.hh

Pulling in localfunctionspace.hh just to get at the declaration of gfs_to_lfs
includes a very large amount of code. tags.hh is much more lightweight.
[Ordering] Add some missing include statements to make headercheck happy
[Ordering] Port GenericReferenceElements -> ReferenceElements
[Exceptions] Add new header common/exceptions.hh as a central place for PDELab-related exceptions
[Ordering] Add InterleavedOrdering to replace functionality of old BlockwiseOrdering

The new class InterleavedOrdering merges the index spaces of its children by alternatingly
picking a fixed number of indices from each child in turn and renumbering those indices
accordingly. In contrast to the old BlockwiseOrdering, the new implementation reduces
template clutter by storing the block sizes at run-time and not as template parameters.

- The new Ordering can be requested with the new InterleavedOrderingTag. Building on the
  newly added support for storing OrderingTag instances in the GFS, that tag takes the
  block structure as a constructor parameter.

- OrderingBase is aware of the new, interleaved merging algorithm and will do the right
  thing when mapping a single DOFIndex without having to dispatch to the new Ordering
  implementation. For this purpose, the patch adds a new enum MergeMode to dynamically
  indicate the mode of operation. The current mode of an OrderingBase can be queried
  by a call to mergeMode().

- The InterleavedOrdering and its node-specific subclasses are almost an exact copy of
  the LexicographicOrdering. OrderingBase will verify the correct blocking structure
  at construction time and raise an exception on error.
Merge branch 'feature/interleaved-ordering'

Close one of the last remaining feature gaps w.r.t. the old DOF infrastructure and add
the new InterleavedOrdering as a replacement for the old BlockwiseOrdering. I did not want
to retain the old name because it works differently (run-time blocking specification instead
of compile-time).

Implementing the new Ordering also required a number of additional changes:

- GridFunctionSpaces now store an instance of the OrderingTag as a place to store dynamic
  information.
- Assorted code cleanups (remove duplicate code, move common functionality to more intuitive headers).
- There is now a base exception for PDELab errors in a new file common/exceptions.hh.
- Finally, I stumbled across a number of smaller problems that got fixed along the way.

* feature/interleaved-ordering:
  [Ordering] Add InterleavedOrdering to replace functionality of old BlockwiseOrdering
  [Exceptions] Add new header common/exceptions.hh as a central place for PDELab-related exceptions
  [Ordering] Port GenericReferenceElements -> ReferenceElements
  [Ordering] Add some missing include statements to make headercheck happy
  [GridFunctionSpace] Move gfs_to_lfs descriptor to gridfunctionspace/tags.hh
  [Ordering] Move transformation setup to dedicated header file
  [Ordering] Move update_direct_children visitor to utility.hh and into ordering namespace
  [GridFunctionSpace] Store OrderingTag instance in GridFunctionSpace