TpFileTransferChannel: Fix possible crashes.

tp_file_transfer_channel_accept_file_async() and
tp_file_transfer_channel_provide_file_async() operations are supposed
to complete as soon as the CM returns from AcceptFile or ProvideFile.
That means that we cannot call operation_failed() for streaming errors.

We also have to keep a ref on self while streaming the file to
avoid a crash in the callback when we dereference self.

This means that the client app cannot cancel the ongoing streaming
by unreffing the channel, replying on dispose calling g_cancellable_cancel().
It can still be doing using g_object_run_dispose() though. To make it cleaner
we should probably add tp_file_transfer_channel_cancel().

The spec does not provide any way for the streaming client to inform
the CM and other clients about the error occured while streaming.
TpFileTransferChannel API does not even have a way to propagate that
error to the user.