Start working on a backup restore facility in YaspGrid

With the tensorproduct feature it might be interesting for some
users to export the grid. As this should not only be for actually
restoring the grid, but also for postprocessing data, the output
format will be readable by the human eye.

As a starting point, we shamelessly copy alugrids facility.
[test] Add an initial test of the backuprestore facility to test_yaspgrid
Implement backuprestore for equidistant yaspgrids
Adjust the print() method of the coordinate class

When calling it on backup(), the output format has
to be unified.
Add some getter functions to the grid.

They are needed for backup().
Unify the BackupRestoreFacility to support both coordinate types

I originally aimed for two specializations, but realized it can
be done in one without two much effort. The tensorproduct coordinate
stuff is not yet implemented. Only the naming convention is implemented:
TensorProductGrids write on file per rank, equidistant grids only one
file (rank 0 is responsible)
Go back to having to specializations and implement TensorProduct stuff

Havig different constructors for the different coordinate
types would require construction traits or something similarly
complex. Alas, it is easier to have 2 specializations. A first
implementation of the tensorproduct case is given (and tested for).
Adjust the print() method of TensorProductCoordinates

It is used on backup() and should match the syntax we
expect on restore().
Add LoadBalancing information to the BackupRestoreFacility

The information from the load balancer can be written to the
file. To restore it fro there, a special class deriving from
YLoadBalance is needed.
Add a private constructor to YaspGrid that only knows local coordinates

This constructor is used to build a tensor product grid from local coordinates.
It is kept as a private constructor to protect the user from constructing
wrong overlapping coordinate sets. It still allows such construction via the
BackupRestoreFacility (which is introduced as a friend).
Finalize the BackupRestoreFacility for tensor product grids

We need the global size to determine whether we are at a
physical boundary. Make use of the new private constructor.
[test] Expand the test suite

Make an entire grid check with the restored grid.
Compare a backup of restore with the original backup.
Revert the change in print() on EquidistantCoordinates

As the size information isnt needed in backup(), the method
is not used there, but instead meshsize is extracted directly.
[bugfix] Backup correct data for equidistant coordinates

We need the global coarse size instead of the local. Also,
clean up the filename stuff.
[test] [bugfix] perform the test only if necessary

on tensorproduct grids and on rank 0
[Cleanup] Remove output statements

Those were mainly for debug.
Remove redundant information from the new constructor

The offset information can be reconstructed from the load
balancer. This is a significant step towards making the
constructor public.
Toggle capability

YaspGrid now fulfills the interface of BackupRestoreFacility.
Add a meaningful error message if the the grid is restored with a wrong processor number.
Introduce a comm parameter on the restore methods

This change is kind of experimental, as it
a) implements an interface change under discussion
b) needs a default constructor on the CollectiveCommunication
c) does not work yet in sequential AND parallel

The latter is because of the inconsistencies in Yasps
handling of communicators throughout there constructors.
I will have to look into that.