libdistance

re #299 Three generic public functions, `assign_nearest`, `pdist`, and `dist`, which operate with any of the vector distance metrics on double or float, or rmsd on mdtraj trajectories. I think most of the cython library can be removed and replaced with calls to this.
The functions in `assign.hpp`, `pdist.hpp` and `dist.hpp` use a function that returns a function pointer to resolve the metric function by name,  and I couldn't get that construct to work in cython.