knn classifier accepts various data structures

Classifier can accept data structures form [NearestNeighbors](https://github.com/johnmyleswhite/NearestNeighbors.jl) package.
Right now we can't guarantee that a type implements `nearest`, but we can start by just insuring that the tree member `t` is an object whose type is a subtype of `NearestNeighborTree`. When Julia has interfaces, we could clean up things to give errors before `nearest` is called.