Use Numpy for spherical distance computations

This is just #881 rebased on the latest master.  Since @ebressert is starting a new direction in data science, this PR takes the liberty of grabbing his commits to push forward.  This will close #881, which was deemed ready to merge after rebase.