equalsIgnoreTime and equalsIgnoreDate were changing the underlying
values - fixed.
Full test added
Merge remote-tracking branch 'origin/paul' into nathan
Proved out not forcing recycle on DocumentCollectionIterator. You can
now stash a Document in the middle of an Iterator, and the handle
remains valid even once the iterator is complete.

HashSet<Document> stash = new HashSet<Document>();
for (Document doc : db.getAllDocuments()) {
  if (someCondition) {
    stash.add(doc);
  }
}
for (Document doc2 : stash) {
  doc2.getLastModified();
}

Signed-off-by: Nathan T Freeman <nathan.freeman@redpilldevelopment.com>