new GridTools::flatten_triangulation

New GridTools::flatten_triangulation. Gives the ability to copy a flattened version of a Triangulation, with possibly different spacedims.
I don't think this is useful. Just say that it is not allowed to call this function when the original triangulation has hanging nodes/is adaptively refined. The result doesn't make any sense and is almost certainly not what a user wanted -- regardless of the fact that the function may (spuriously) succeed in optimized mode.

By the way, is there a better way of checking this? Maybe something like this:
```
#ifdef DEBUG
  for (cell=...)
    Assert (cell->level() == triangulation.n_levels()-1, 
                 ExcMessage ("This function can only be called for triangulations that do not have hanging nodes."));
#endif
```