more modifications to new optimizers

noticed a "bug" in lbfgs_scipy.  The scipy version of lbfgs uses the
bounded L-BFGS-B algorithm.  The gradient is projected to avoid stepping
over the bounds, and the tolerance check is done on the projected
gradient.  I still don't know why, but this means that the actual
gradient never satisfies the required tolerance.  Very strange.
Merge branch 'master' of github.com:js850/PyGMIN
add warning to lbfgs scipy documenation

documenting the odd and confusing behavior causing it to
stop early for very low tolerances
various small updates to mc.py and potentials

add routine to rotations.py for sampling uniformly from a hypersphere
add new takestep routine `ParticleExchange`

also clean up some of the other takestep routines