virt: introduce caching the parsed domain XML

This patch replaces the repeatively parsed domain XML with a pre-parsed
and cached implementation.
Additionally it comes with convenience functions for accessing the devices
sub-tree

Change-Id: I7e106b2f2d3f4160d4e882f1a2880cb1b52fbb22
Signed-off-by: Vinzenz Feenstra <vfeenstr@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/17694
Tested-by: Francesco Romani <fromani@redhat.com>
Reviewed-by: Dan Kenigsberg <danken@redhat.com>