fixes #6085 - fixed virsh dhcp provider netmask interpretation

The virsh.rb loadSubnets method was only looking for a definition of
a netmask inside the libvirt network XML, despite netmask not being
there in case a prefix attribute was defined. netmask and prefix are
mutually exclusive by libvirt definition.

Also the ipaddr library has no easy way of retrieving a readable netmask
from a prefix, albeit this functionality is provided by the inspect
method of IPAddr, a monkey-patch "to_mask" was introduced to circument
the original implementation.
fixes #6377 - incorrect dhcp providers server virsh.rb loadSubnetData

The commit fixes dhcp server virsh.rb provider. Upon loading the
contents of the libvirt network XML and parsing for DHCP reservations a
check is performed on the kind of records that are being loaded. The
dhcp_api.rb 'delete' helper tries to load network entries of the
'reservation' kind, the helper uses modules/dhcp/dhcp/subnet.rb to
validate on that and filter out entries.

In contrary to other providers (ms, isc) the loadSubnetData method of
virsh.rb was dealing out "Proxy::DHCP::Record" for any entry it was able
to discover, but should have been instantiating
"Proxy::DHCP::Reservation" to pass the validation.

This resulted in "ERROR -- : Record
x.x.x.x/xx:xx:xx:xx:xx:xx not found" as well as leaves in the libvirt
network XML. This prevented the creation of VMs with the same addresses,
since leftover DHCP entries conflicted with the new ones.
fixes #6289: avoids concurrent downloads of files with the same name and destination dir.
Replace Kernel#open with File.open