client: add support for metalink source

Motivation:

FTS supports bulk operations, but using its own specific format.  The
metalink is a well-documented (see RFC 5854) XML format that describes
how to receive a set of files.

Support for metalink would allow FTS to accept a bulk transfer request
with the FTS user presenting the information in a standard fashion.

Modification:

Add initial support for parsing the metalink XML format.  The idea is
that the user presents a base URL that all files (within the metalink
file) are resolved against.

There are several limitations with the current implementation:

 *  Metalink allows for a file to have multiple sources.  This patch
    selects only the best url (the one with the lowest priority value).

 *  There are several types of source URLs supported by metalink (http,
    bittorrent, etc.).  The code currently assumes that any source URL
    is acceptable by FTS

 *  In principle, the metalink allows a file to have different digest
    values, as calculated by different checksum algorithms.  Currently,
    only adler32 checksums are supported.

Result:

It is now possible to submit a bulk request to FTS using a metalink
file.
13 jobs for development/add-metalink-support in 7 minutes and 18 seconds (queued for 2 seconds)
latest