client: Add D-Bus helper library

No functionality changes. This is just about avoiding duplicated code.
client-doc: Add progress property to transfer

This property exposes the number of bytes transferred so far in a given
transfer.
client: Add progress property to transfer

The number of transferred bytes is exposed in D-Bus using a specific
property for this purpose.

Internally, the value of this property does not necessarily match the
internal progress counter. In order to avoid D-Bus overhead, the
property will be updated once per second.
client-doc: Add transfer event-reporting signals

These signals replace the old agent-based notification mechanism.
client: Add transfer event-reporting signals

These signals replace the old agent-based notification mechanism.
client-doc: Remove D-Bus agent

The request confirmation from the agent is not really useful and the
rest of the reporting is already reported by the transfer's signal-
reporting.

The main benefit of this is that the API is simpler and the client apps
do not have to register the agent, and can just listen to the relevant
signals.
client: Use transfer owner instead of agent

The security checks in the transfers' D-Bus API will consider check for
the transfer owner's path (session owner) instead of the agent path.
client: Remove D-Bus agent

The authorization mechanism is entirely removed from the session, and
thus transfers are automatically started (once popped from the queue)
without confirmation and without any name/filename change.
client: Remove unused functions in transfer API

After the removal of the agent these functions are not useful any more.
client: Remove internal transfer progress report

The new D-Bus API uses signals to report the progress updates, so the
internal progress callback is not needed any more.
client: Remove obsolete authentication code

After the removal of the agent, the implementation of the session can be
simplified by removing all authentication-related code.
client: Expose all transfers in D-Bus

Relying on a internal policy (based on transfer type) to decide if a
transfer should be exposed or not in D-Bus has some limitations. The
simplest possible alternative to this is to expose all transfers in
D-Bus, assuming the overhead is not significant.
client: Make FileTransfer.PutFile asynchronous

There is no reason to have inconsistent behavior between GetFile and
PutFile, in FileTransfer D-Bus API.

Before this change, PutFile reported success immediately after queueing
the transfer, even though the D-Bus signature includes the async flag.
client-test: Remove agent from ftp-client

Remove the use of the agent in the test script. Most of the
functionality is still there with the exception of progress reporting,
which is not possible due to some transitional limitations in the D-Bus
API.
client: Make transfer filename optional

The property might not exist for certain transfers, typically when they
have been initiated internally.
client-doc: ObjectPush sessions return transfers
client: Support empty filename in obc_transfer_get

Passing an empty string as a filename for obc_transfer_get will be
similar to passing a NULL filename. This means a temporary file will be
created to store the content of the transfer.

NULL and "" are not exactly equivalent though: in case of NULL the file
will be automatically removed immediately after being open, which means
that the transfer initiator should also open the file to prevent it from
being removed (to be used from the modules). In this case, the filename
will not be exposed in D-Bus.

On the other hand, if "" is given, the file will be removed only in case
of error. So after success the transfer initiator should decide whether
the file should be removed or not.

This change is convenient in order to expose the same API in D-Bus.
client: Expose D-Bus data in internal transfer API

Expose in transfer API the D-Bus path and properties as should be
returned by transfer-initiating D-Bus methods.
client: ObjectPush sessions return transfers

Return the D-Bus path of the transfer representing the operation.
client-doc: FileTransfer sessions return transfers