Ensure that libvirt files are not world readable

The files that nova shares with libvirt and QEMU may contain user
sensitive information and it might be a problem if those files are
visible for all the users in the machine. These files include the images
under instances_dir, the base images and snapshots.

This patch introduces a new decorator that will change the user
file-creation mask temporarily during the call of a method, allowing
us to mark methods that shouldn't create world readable files thus
protecting them.

Also in this patch, all the calls that interact with libvirt owned files
have been modified to use rootwrap so they can still access these files
(for resizing an image, snapshoting a disk or migrating an instance).

As a side effect, by setting the proper permissions to libvirt files and
accessing them using rootwrap, this patch avoids problems with cached file
attributes that might trigger problems as the one described in bug 1218372

Closes-Bug: #1129748
Closes-Bug: #1218372
Closes-Bug: #1227027
Change-Id: Ib290f8df20a9e29ed98faec221f607b685e26da4