clean up cython lbfgs optimizer

by declaring events (cpdef) we can attach it to the c++ (cdef) class.
Then we don't need to separate to functionality into python plus c++ and pure
c++
update modified fire and gradient optimizer

they are both simplified now that events is part of the unified
framework
lbfgs now derives from the cdef gradient optimizer
add H0 back in to the LBFGS result object
Merge branch 'master' of https://github.com/pele-python/pele
Merge branch 'master' into base_optimizer
add LJCutPeriodic c++ potential

This is necessary for BLJCutPeriodic
Merge pull request #30 from js850/base_optimizer

LBFGS uses the optimizer base class
Merge branch 'master' of github.com:pele-python/pele
lbfgs_cpp now accepts keyword logger

It ignores it, but at least it doesn't crash if it's passed
add keyword rel_energy to lbfgs_cpp
bug fixes
Merge branch 'master' of https://github.com/pele-python/pele into periodic2D
adapted LJCutPeriodicAtomList to new distances
added keyword arguments to harmonic potential
small update to sort_eigs
bug fixes
modified harmonic potential
modified for loops in simple pairwise potential to reduce cache misses
Merge pull request #32 from smcantab/periodic2D

Added 2D distances and generalised pairwise potential to n-D and adapted potentials