Minor documentation improvement
[bugfix,parallel] Return proper leaf iterators even on vertically load-balanced grids

The UGGrid leaf iterator works by iterating over all entities of all levels, and
stopping only at leafs (sorry, no better way).  So far, the implementation
implicitly assumed that there is at least one (leaf or non-leaf) entity on each level.
This assumptions fails if vertical load balancing is used, i.e., coarser levels are shipped out
entirely to different processors.  In such a case UGGrid would currently return
an end iterator even though leaf elements exist.

This patch adds handling for completely empty levels, and hence fixes the problem.
Implement load balancing with the partition given by an external load partitioner

UG supports powerful and flexible load balancing, but the algorithms used to
compute the partitions are rather rudimentary.  What you really want for
larger-scale computations is to be able to use your external mesh partitioner
of choice (ParMetis, Scotch, and friends).  Now you get the possibility to
do just that.  This patch adds a new load-balancing method, which accepts
as input a std::vector of element ranks.  For each leaf element on the local
process, these ranks describe where the element is supposed to be sent to.
The user is free to choose any method to determine these numbers, UG will
then happily redistribute the grid accordingly.

Enjoy!