update normalmode browser

it now uses metric tensor by default, but has an option to use the
Hessian eigs.

the list selection is now cleaner.
LBFGS_CPP now accepts events

since events is purely python I reimplemented run() to iteratively call
one_iteration() followed by the events.  If events is None this is
bypassed and everything is done in c++.