librados, test: Have write, append and write_full return 0 on success

Fix consistency of write, append, write_full, all return 0 on success
Include C (rados_*) variants, C++ ctx variants
and aio get_return_value() and rados_aio_get_return_value()

Signed-off-by: David Zafman <david.zafman@inktank.com>
pybind: Check that "key" is a string

Signed-off-by: David Zafman <david.zafman@inktank.com>
pybind, test: Add python binding for append and add to test

Signed-off-by: David Zafman <david.zafman@inktank.com>
test: Add EC unaligned append write test to ceph_test_rados_api_io

Signed-off-by: David Zafman <david.zafman@inktank.com>
test, librados: aio read *return_value consistency, fix ceph_test_rados_api_aio

test:
  Add set_completion*PP() functions to cast arg to correct class
  Add return_value checks
  Add some reads with buffers larger than object size
  Check buffer length on reads
librados:
  Make sure *return_value() has bytes read in all cases

Signed-off-by: David Zafman <david.zafman@inktank.com>
test: Add multiple write test cases to ceph_test_rados_api_aio

Signed-off-by: David Zafman <david.zafman@inktank.com>
test: Add EC testing to ceph_test_rados_api_aio

Fixes: #7437

Signed-off-by: David Zafman <david.zafman@inktank.com>