ucs: implement transaction handling
We can't rely on the serialization of HTTP requests alone. We need
transactions to group UCS operations together so that no other UCS
operation can interfere.
- every UCS request is now enqueued first
- when a request has been enqueued or a response has been processed,
then we check if we are allowed to send a request and if there is an
enqueued request
- transactions obsolete the deferred request handling -> removed
- for now every request is using the default transaction
- request takes ownership of body string now
- fixed two places where we didn't properly handle payload on error
- move sipe_ucs_free() before connection cleanup