Adding simple virsh provider for libvirt DNS/DHCP/TFTP

For over an year now it is possible to modify libvirt network settings using 
virsh commands, either on live instance or permanent configuration (or both) 
thanks to this patch:

http://www.redhat.com/archives/libvir-list/2012-September/msg01380.html

That means I was able to create DHCP and DNS provider called *virsh* that does
all we want. *Development setup of Foreman was never that easy*. With simple
steps, one can configure full provisioning on a box with libvirt. This is
_Foreman in a box_, batteries included!

Part of this patch is tutorial, which I want to put on our wiki once this is 
waived. Please try this out.

We are using *default libvirt installation* without any changes. First, let's
define TFTP root. Edit "default" virtual network and add 'tftp',
'bootp' and 'domain' elements.

   <network>
     <name>default</name>
     <uuid>16b7b280-7462-428c-a65c-5753b84c7545</uuid>
     <forward mode='nat'/>
     <bridge name='virbr0' stp='on' delay='0' />
     <domain name="local.lan"/>
     <mac address='52:54:00:a6:01:5d'/>
     <ip address='192.168.122.1' netmask='255.255.255.0'>
       <tftp root='/var/tftpboot' />
       <dhcp>
         <range start='192.168.122.2' end='192.168.122.254' />
         <bootp file='pxelinux.0' />
       </dhcp>
     </ip>
   </network>

Create a tftpboot directory, make sure it is accessible for account dnsmasq is 
running on (in Fedora this is nobody), set gid flag for newly copied files and 
copy necessary files to the new TFTP root directory:

    mkdir -p /var/tftpboot/{boot,pxelinux.cfg}
    yum -y install syslinux
    cp /usr/share/syslinux/{pxelinux.0,menu.c32,chain.c32} /var/tftpboot
    chgrp -R nobody /var/tftpboot
    find /var/tftpboot/ -type d | xargs chmod g+s

Configure smart-proxy:

* enable tftp
* set correct tftp boot and set explicit tftp_servername
* enable dns virsh provider
* enable dhcp virsh provider
* check virsh_network name ('default')

Important configuration values:

    :tftp: true
    :tftproot: /var/tftpboot
    :tftp_servername: 192.168.122.1
    :dns: true
    :dns_provider: nsupdate_virsh
    :dhcp: true
    :dhcp_vendor: virsh
    :virsh_network: default

Make sure the user foreman proxy will be running with has sudo and virsh 
commands available and password is not required for virsh command. Also make 
sure sudo is not requiring tty. Something like:

    Defaults !requiretty
    %users ALL=/usr/bin/virsh

Foreman is now configured for libvirt provisioning, you can now start both 
foreman and smart-proxy directly from git and work on provisioning easily.