Fix async tag in ovirt_vm_refresh_finish

The tag passed to g_simple_async_result_is_valid was not the correct one.
Add ovirt_resource_action() method

This will do a synchronous call to invoke an oVirt REST action. This is
a generic version of ovirt_vm_action() which has been ported to it.
Add ovirt_resource_invoke_action_async()

This is a generalisation of the OvirtVm code since actions are a
resource-level concept: other classes deriving from OvirtResource may need
to invoke actions.
Use OvirtResource async helpers in OvirtVm

Now that the async code from OvirtVm has been made generic, we can drop the
async implementation from OvirtVm and use the generic one.
Add support for VM pools

The library is now able to allocate VMs from the pool synchronously.
The attributes size, prestarted_vms, and max_user_vms are parsed.
Add ovirt_vm_pool_allocate_vm_async()

The implementation is fairly simple using the generic OvirtResource async
helpers.
Add sample code which lists VMs/VM pools

There are both sync and async tests showing how to get a list of VMs/VM
pools from an oVirt instance.
Use G_MAXUINT instead of G_MAXUINT32 as max guint value

ovirt_utils_guint_from_string() converts a guint from a string, but was
reporting overflow when the converted value is bigger than G_MAXUINT32.
As we are handling a guint, it's better to use G_MAXUINT as the limit.
Reduced code duplication in OvirtVmPool by adding a utility function.

The functions to get size, prestarted_vms, and user_max_vms were all almost
the same code because each one was getting an integer from an XML node.
To deal with the code duplication, a utility function was added which
given a g_object and an XML node, sets a specified g_object property
from a specified XML sub-node. This patch removes the separate functions
and replaces them with calls to the new utility function, called
g_object_set_guint_property_from_xml().