change to numpy definition of size_t

np.uintp instead of np.uint.  I'm not sure what the difference is
add numerical gradient to cpp base potential
add numerical hessian to the cpp base potential