NF: store internal state of query-engine so that they do not require training again after saving and loading
RF: use standard dict rather than defaultdict, because the latter has issues with pickling
NF: store internal state of "lazy evaluation" internal surface states
ENH: unit tests for query engines i/o, requiring that the instances are still trained after loading
BF: do not confuse query engine with surface
ENH: better unit test for both untrained and trained qe
ENH: pre-compute neighbor information when dijkstra distance is used
RF: use @with_tempfile wherever possible
Merge pull request #184 from nno/_tent/qe_io

Surface-based QueryEngines keep trained state after i/o
BF: SplitClassifier -- do not pre-populate the list of clfs. Closes #156

Then ChainNode, which might not adhere to Partitioner interface (ie
without get_partition_specs) could be used as well, and classifiers get
cloned/populated as new splits arrive