MC c++ backend, MPI4Py Parallel Tempering backend, simplepairwisepotential hessian, improvements to GradienOptimizer cython wrappers

This is a huge pull request, it includes

* MC c++ backend: no issues 

* MPI4Py Parallel Tempering backend: no issues 

* simplepairwisepotential hessian: calling the hessian for a number of potentials will return an error because the function get_hessian is declared but not implemented, one can either call the numerical_gradient when this is called or actually work out the second derivative of the potential with respect to the interparticle distance. This is essential, otherwise cpp tests will fail

* improvements to GradienOptimizer cython wrappers: this only involves ModifiedFire, it should be extended to LBFGS but it's not essential