Keyvaluestore cache

Mainly add header cache to KeyValueStore, in order to make header passed with shared_ptr, there exists many methods arguments needed to change.
oh.  I suggest instead keep StripObjectHeader name the same and make the typedef StripObjectHeaderRef.  This is what other ceph code is doing and it makes it clear to the reader what kind of type it is..