fixes #4016 - create libvirt hosts with pre-provisioned volumes

This allows foreman to create hosts on volumes that already exist on the host. You can mix and match both new volumes and current volumes in the same host. This should also allow foreman to manage hosts on multipath devices (SAN), which libvirt storage pools only support as read-only.

Also FYI, the form has "#{p.name} (#{p.path})" because multipath devices have a random character serial for their name but show a more proper name in the path.

To-do:
Test deleting a host using a multipath device. Delete will fail, so need to handle it. Currently if you attach a pre-provisioned lvm storage volume it will delete it when you delete the host, same as normal. 

I've thought about only offering a list of unused volumes in the form. Libvirt and fog are super slow though, so I'm not sure if this is a good idea even if it makes it more dummy proof. Thoughts?
http://daniel.fone.net.nz/blog/2013/05/28/why-you-should-never-rescue-exception-in-ruby/ :smile: 

You can probably rescue ```Fog::Errors::Error```, are you expecting any other kind of error? 

I opened https://github.com/fog/fog/issues/3190 a few days ago, ```ack -ri raise lib/fog/libvirt``` shows the libvirt provider in Fog only raises Fog::Errors::Error for nearly all requests, so rescuing that should be good. 
Same thing for the other rescues included in this commit.