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.
Why does assign.hpp have to live in C space rather than Cython?  Curious