Add common ovirt_utils_strip_api_base_dir()

This code was duplicated in OvirtVm and OvirtProxy
Add ovirt_utils_gerror_from_xml_fault()

This moves some code from OvirtVm to ovirt-utils.h as this will
be useful in more situations than just parsing action responses.
Reorder headers in OvirtVm
Make sure a name is set for OvirtCdrom instances

With oVirt 3.2, the cdrom xml does not contain a name, but
OvirtCollection needs a name. As there can only be one CDROM device
per VM in that version, make up a name.
Add OvirtResource::to_xml() vfunc

This is used to serialize an OvirtResource to XML, which is needed
when one wants to add/update a resource.
Implement OvirtCdrom::to_xml()
Implement ovirt_resource_update()

For resources that can be serialized to XML, this sync call will
try to update the corresponding resource on the oVirt instance.
Add OvirtResourceRestCall class

This is needed to generate the body of the XML REST call when
we want to update an existing resource as this is quite different
from how we generate the body content for actions.
Rework Ovirt*RestCall

Rename OvirtRestCall to OvirtActionRestCall and add a base abstract
OvirtRestCall class that will be shared by OvirtActionRestCall and
OvirtResourceRestCall.
Add 'href' and 'method' properties to OvirtRestCall

They map to the corresponding RestProxyCall getters/setters
OvirtResourceRestCall: Set function from resource URI

When instantiating an OvirtResourceRestCall, we can get
the href of the object we want to interact with from the
OvirtResource we are manipulating, this saves a few lines from
calling code ;)
OvirtResourceRestCall: Handle RestParams

If there are some RestParams set on tho OvirtResourceRestCall, we
handle them by adding them in the query part of the URI. This will
be used when updating 'cdroms' (subcollections of vms) as they
can use an optional 'current' parameter.
This requires a patch to librest though so that it can handle
rest_proxy_call_set_function being called from a
RestProxyCall::serialize_params vfunc.
Split ovirt_rest_call_async in 2 functions

Now that we have 2 different OvirtRestCall classes, it's better to
pass the OvirtRestCall parameter to ovirt_rest_call_async so that
we can easily use it with instances of the 2 different classes.
Add ovirt_cdrom_update()

This needs to be different from ovirt_resource_update as there are
2 different modes, one for updates while the VM is running, one
for updates when it's not running.
Implement ovirt_resource_update_async()
Add ovirt_cdrom_update_async()

This is very similar to ovirt_resource_update_async() except
that the user needs to be able to pass an additional parameter
depending on the VM state.
examples: Add example for changing the CDRom content
Don't force ssl-strict to FALSE on RestProxy instances

Setting this to FALSE causes most checks on the remote host SSL
certificates to be disabled (in particular whether it should be checked
against trusted root certificates or not). Since this is not wanted
in most cases, and this can open the door to man-in-the-middle attacks,
it's better to not set it to FALSE, especially now that we can pass
the CA certs to use down to librest/libsoup.
OvirtProxy derives from RestProxy, so client applications can disable
this themselves if they wish to.
Add ovirt_get_option_group() API

This allows applications to easily add support for command line
options libgovirt knows about. For now, it's only --ovirt-ca-file
which specifies the root CA certificate libgovirt should trust during
https REST sessions. If it's not specified, the system CA cert store
will be used.
OvirtProxy: take into account RestProxy::ssl-ca-cert

Now that RestProxy has a ssl-ca-cert property, OvirtProxy::ca-cert
is redundant.  We want to use ssl-ca-file as the canonical property, and
set ca-cert value from it. However, when the user sets the ca-cert
property, we need to create a temporary file in order to be able to keep
the ssl-ca-file property synced with it, which is why the code changes
are more complicated than expected.