OAK-1156 - Improve the document cache invalidation logic to selectivly invalidate doc

Initial implementation of the cache invalidation logic. Various invalidation logic details
are provided in bug notes

Changes done

1. Add 3 strategies for invalidation as part of CacheInvalidator
2. Commit - Made the operations as LinkedHasMap so as to maintain the order of operation. This
   ensures that parent node gets created before the child node. Also it ensures that NodeDocument
   creation time for child node is greater than parent node
3. NodeDocument - Added lastCheck time field which is used to track when this document was checked
   for consistency wrt backend
4. pom.xml - Update the Guava dependency to 15 so as to make use of the TreeTraversor support

git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/oak/trunk@1542182 13f79535-47bb-0310-9956-ffa450edef68
OAK-1156 - Improve the document cache invalidation logic to selectivly invalidate doc

Changes as per review comments
1. Using only modCount for checking if two nodes are same and removing check for lastRev
   as modCount gets changed for changes in lastRev also
2. Using AtomicLong for lastCheck

git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/oak/trunk@1542183 13f79535-47bb-0310-9956-ffa450edef68