v2v: Add binding for libxml2 xmlParseURI.

There is already a partial binding for this in fish/uri.c &
mllib/uri-c.c.  However it is specialized to parsing the -a parameter
on the command line and we want access to the full underlying
functionality of xmlParseURI.
v2v: Don't attempt to make block device paths absolute.

<source dev=...> in the libvirt XML should always refer to a block
device, eg. /dev/sda1.  Don't attempt to make these paths absolute
(they should already be absolute paths, and if they are not it's wrong
to try to make them).
v2v: source_libvirt: Replace create_xml ?dir parameter hack.

Instead of the ?dir parameter which was essentially a hack, allow
callers of create_xml to provide functions that map
<source file="..."> or <source dev="..."> to qemu URIs.

The default for these mappings is the identity function.

For -i libvirtxml we replace the old absolute_path_of_disk function
with a source file mapping function which does the same thing.

There is no functional change in this patch.
v2v: VMware returns MAC all zeroes.  Map this to None.
v2v: Add support for remote ESX connections.

This allows `-ic esx://...' to work because we map the strange source
URI used by ESX to a remote HTTPS connection.

Example disk section that this handles:

    <disk type='file' device='disk'>
      <source file='[datastore1] Windows/Windows.vmdk'/>
      <target dev='sda' bus='scsi'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
v2v: Update TODO.