Add StaticGeometryType

This encodes all the information of a `GeometryType` as template
parameters. Some remarks on the implementation:
* This may be a solition for using `GeometryType`s a template paremters.
* All methods in `Dune::GeometryTypes::` have analogouges in
  `Dune::StaticGeometryTypes::` and additional template
  aliases for parametrized types. Hence you can e.g. use Simplex<dim>.
* There is `LocalHybridGeometryTypeIndex` which works like `LocalGeometryTypeIndex`
  but supports GeometryType and StaticGeometryType.
* Some `topologyIds` are different: If you want to overload for specific
  `StaticGeometryType`s, you must be sure that the same geometry type
  leads to the same type. Hence `topologyIds` are normalize to have 0
  in the first bit.
* One may consider using `uniqueTopologyId = (topologyId >> 1)`
  as template parameter instead to get rid of the nasty non-uniqueness.

For now this is a non-intrusive proposal.
One could also merge `Dune::StaticGeometryTypes` into `Dune::GeometryTypes::` and
`LocalHybridGeometryTypeIndex` into `LocalGeometryTypeIndex`.
This would change some dynamic types to static ones.
However, this should not be a problem since each `StaticGeometryType`
can be converted into its dynamic counterpart.
6 jobs from feature/staticgeometrytype in 4 minutes and 34 seconds (queued for 1 second)
latest
Status Job ID Name Coverage
  Test
passed #52308
duneci
debian:10 clang-6-libcpp-17

00:04:00

passed #52307
duneci
debian:10 gcc-8-noassert-17

00:04:34

passed #52310
duneci
debian:9 clang-3.8-14

00:03:51

passed #52309
duneci
debian:9 gcc-6-14

00:03:30

passed #52311
duneci
ubuntu:16.04 gcc-5-14

00:02:01

passed #52312
duneci
ubuntu:18.04 clang-6-17

00:02:14