Add a naive implementation of the vp-tree data structure for nearest neighbor search
Remove recursion from vp-tree searching, add optimizations