Moved MPI routines to pysic.utility.mpi

Minor restructuring where MPI-related functions in Python were gathered
in a separate submodule.
Added a power potential with shifted coordinates

Added a potential of the type
    V( r ) = eps * ((r1-r)/(r1-r2))**n
Implemented a framework for compound potentials

Often one wants to use a complicated potentials that are not directly
available in the core, but can be built by combining the various terms
that are. A framework has been implemented for wrapping such compound
potentials in a single class in the Python interface.

The wrapper class is called CompoundPotential, and it inherits most of
the interface from Potential. This class defines an "empty" potential,
and to define true potentials, one should write a new subclass of
CompoundPotential. One real potential, the Sutton-Chen potential, is
implemented here as the class SuttonChenPotential. Later, at least COMB
and ReaxFF should be included as well.

The framework is not polished yet. There is no documentation, many
convenience functions remain to be added, and the interface for adding
the potential to a calculator is different to normal Potentials (not
calc.add_potential(pot) but pot.build(calc)). These will hopefully be
fixed soon.
Potential handling update

Made it possible to pass lists of Potentials and ProductPotentials when
using the add_potential methods in Pysic and ProductPotential. It's
often convenient to operate on lists, and now one can multiply
ProductPotentials together.
Update on CompoundPotential

Improved the interfacing of CompoundPotential and added documentation.
Interface bug fix

Made the set_potentials method of Pysic to loop over add_potential.
This because giving a CompoundPotential through set_potentials didn't
call build() and thus the calculator never got the elements the
compound was amde of.
Interface update for CompoundPotential

Small interface updates and internal tidying in CompoundPotential and
SuttonChenPotential. Also added documentation.
Bond order factor duplicate check

Added a duplicate check for bond order factors. When the bond order
factors are created in the Fortran core, every potential used to have
its own factor even if they actually had the same ones attached to them
in the Python side.

Now, the code checks for reuse of the same Coordinator when the core is
created, and if the same one appears with several potentials, it is
attached to them all without creating several copies. The immediate
benefit is that the code does not need to evaluate the same factors
several times during energy and force evaluation (as the factors are
precalculated at the start of evaluation).
Makefile corrections

Some fixes to makefile:

- compiling in modes other than 'parallel' created pysic with a suffix,
e.g., pysic_serial. This was incompatible with the new submodule
structure. Now all versions created with make are named pysic.
- Serial compilation had the noopt flag on, which led to the
compilation of a nonoptimized version. This is now fixed.

This commit also includes a bug fix in ChargeRelaxation where a routine
that was copied from CoulombSummation actually still referred to
CoulombSummation, not ChargeRelaxation.
Fixed severe bug with product potentials

Fixed a bug with ProductPotential where having one component evaluate
to zero could give NaN forces.