Use separate RevObject caches for the staging and object databases, make it configurable

Fixes an issue with a RevObject cache being shared by both the object and staging
databases that may make it appear that some objects are present when they are not
in one or the other database, by keeping separate caches for both.
It also implements cache eviction when the object/staging database delete
methods are called, so that objects don't appear to exist after deleted.
Finally, caching can be disabled with the geogit config objectdb.cache.enabled = false
and geogit config stagingdb.cache.enabled = false config options.
The max size of both caches is set to 50k objects by default, and can be changed
through the [objectdb|stagingdb].cache.maxSize configuration option.
Merge remote-tracking branch 'groldan/caching'