osd/ReplicatedPG: respect RWORDERED rados flag

If this flag is set, we need to order reads as writes.  In particular, this
means that reads will wait for degraded object recovery even if there is a
local copy.  And subsequently will be ordered after a preceding write that
is waiting for the same thing.

Signed-off-by: Sage Weil <sage@inktank.com>
librados: add OPERATION_ORDER_READS_WRITES flag

This maps to the internal RWORDERED option, which indicates that a read
should be ordered the same way a write is.

Signed-off-by: Sage Weil <sage@inktank.com>
ceph_test_rados: order racing read wrt to the COPY_FROM

The prevents:

 - send COPY_FROM, blocks on recovering object
 - send stat, procedes to return old object version
 - COPY_FROM succeeds with new version
   -> fail

Signed-off-by: Sage Weil <sage@inktank.com>
Merge pull request #632 from ceph/wip-rworder

fix up read vs write ordering flags; make ceph_test_rados use it

Reviewed-by: Greg Farnum <greg@inktank.com>
Merge git://github.com/ceph/ceph