Remove redundant GridType template parameter from CpGrid classes.

For the entity, indexset, idset, and iterator classes it is
a priori clear that they work on a CpGrid. Therefore using a template
parameter for specifying the grid type is superfluous and might increase
compile time. This patch removed the grid type template parameter from the
classes.
Some fixes towards compilation
Moved IO to CpGridData
Capsulates the grid data in an extra structure and strips unnecessary GridType template parameter.

This is the first step in parallelizing Cpgrid. All the data is now encapsulated in
CPGridData class. CpGrid holds a pointer to it and forwards function calls. Later on
Cpgrid will be able to hold to instances of the data, e.g. a global grid and a local
view of the redistributed global grid.

While at it I took the liberty to remove the GridType as a template parameter from all classes.
As they will only work for CpGrid I deemed them unnecessary.
Forward more read and write methods from CPGridData to CpGrid that are needed.
Added routine to compute overlap region.
[cpgrid] Added routine to redistribute grid (not working yet!)
Correctly initialize index set and id set with default constructor.
[entity] export codim within EntityRep
Added a class representing a global id set of DUNE.

The global ids are stored in vectors that can be accessed
by the index of a entity. As a fallback we use the local id set to
compute the id.
Computed and added the global id set to the CpGridData.
Use dune-common's nullptr compatibility
[cpgrid] Added method to scatter a global grid to all processors and corresponding test.
Added rules to compute the partition types and a distribution test.
Implements iterators for different partitiontype with preliminary tests.
Corrected filename in comment.
Throw a runtime error on global methods when distributed.

Both IJK and globalCell do not make sense for a distributed grid.
Therefore we throw a runtime error in this case.
Meaningful implemented methods to get the size of the partitions.
Store parallel information in object.

Previously the information was just computed and store internally
in the method. Now the remote index information and the parallel index
for the cells is stored in the object.
Added invisible ghost cells and corrected partition types of faces.

The partition types of codim 1 entities in DUNE can be interior,
border, overlap, or front. To be able to distinguish these, we need
to be able to distinguish the boundary of the global domain from the
one of the domain that is stored on a process. We do this the following
way:
Each codim 0 entity that is not part of the global boundary has two
neighbors. One of them might be invalid, which is marked by its index
being numeric_limits<int>::max(). In this case it is part of the boundary
of the local domain of the processor (boundary() is false!) and of partition
type border and front, if the neighbor is part of partition interior and
overlap, respectively.

This patch uses this new layout and computes the partitions accordingly.