Make DiffTree use the new DiffTreeVisitor intead of DiffTreeWalk.

DiffTreeVisitor is much simpler than DiffTreeWalk/TreeDiffEntryIterator.
DiffTree now uses a producer/consumer approach to adapt the visitor's
'push' calls to an Iterator<DiffEntry>, as opposed to TreeDiffEntryIterator's
'pull' approach.

Also, this commit fixes some "works by accident" issues where behavior
complied with a bug in DiffTreeWalk that didn't report changed trees
even if setReportTrees(true) was set.
Add bounds and changeType filtering to DiffTree
GeoGigDataStore support for building FeatureSources out of diffs
synchronization between difftree's producer/consumer to finish prod. thread if the iterator was not fully consumed