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).

Fixes bug 1129748
Fixes bug 1227027
Fixes bug 1218372

Change-Id: Ib290f8df20a9e29ed98faec221f607b685e26da4