Wip copy on read

An improved copy-on-read implementation based on the pull request (https://github.com/ceph/ceph/pull/2158) by Min Chen <minchen@ubuntukylin.com>, Li Wang <liwang@ubuntukylin.com> and Yunchuan Wen <yunchuanwen@ubuntukylin.com>. 

The bufferlist holding the entire object from parent is allocated separately.

Also provided a unit test for verifying the implementation.
I would recommend ensuring that you revert the copy-on-read setting back to its original value upon exiting the test case since these are global configuration settings that will only be read once.  BOOST_SCOPE_EXIT is a nice RAII helper that can restore the value no matter how the test case exits.