rgw/CloudTransition: Replace Coroutines with RGWRestConn APIs
To avoid the overhead of using coroutines during lifecycle transition,
RGWRESTStream* APIs are used to transition objects to remote cloud.
Also handled few optimizations and cleanup stated below:
* Store the list of cloud target buckets as part of LCWorker instead
of making it global. This list is maintained for the duration of
RGWLC::process(), post which discarded.
* Refactor code to remove coroutine based class definitions which are no
longer needed and use direct function calls instead.
* Check for cloud transitioned objects using tier-type and return error if
accessed in RGWGetObj, RGWCopyObj and RGWPutObj ops.