Cache ObjectContexts across OSDOps

ObjectContext is constructed when op begins and destroyed when op finished, it costs about 100us each op.

This patch will cache the ObjectContext in a RandomCache to keep it in memory, and trim the cache when its correspondent object is removed or the cache count reach the osd_object_context_caches_count whose default is 4096.

This patch will reduce nearly 100us for each IO if hit cache.

Signed-off-by: Dong Yuan <yuandong1222@gmail.com>
This should be per-pg, not global to the osd for at least three reasons:
1) No object shows up in two pgs, so you won't have any duplication anyway.
2) Having a single one causes op threads to contend on the single object_contexts_caches.
3) You need to clear the cached object contexts for a pg when it goes through an interval change.