ClosableIterator#hasNext() call close() when false.

It confuses me a great deal that we aren't doing this already.
Granted we still have to have try/finally to explicitly invoke
close() either in the case of exceptions or if we do not want
to consume from the entire iterator. But as good hygeine it seems
like we should invoke close() when we no longer need the resources.
The unit tests are passing with this change. I can't think of any
obvious reason we aren't doing this already.
Add javadoc and atomic close() guard.

Adding javadoc on ClosableIterator implementations that will invoke
the close() method when hasNext() return false. Adding atomic
close() guard on PageDB.Iter class to ensure that close() operation
happens at most once.
PageDB.DR#shutdown AtomicBoolean -> boolean variable.

PageDB.DR is not a thread-safe class.
Merge branch 'spiegel/closable-iterator-cleanup' into spiegel/path-query-glob
Bug fixes in DataTreeUtil.