More work on CompositeVectorSource, it can now compose all train-time document features and place them in a KD tree. It can then retrieve nearest neighbours of a given n-gram from the tree. Still thinking about the interface of all that. Some of the tests are not comprehensive, and some do not exist yet.