hvm: Modify interface to support multiple ioreq server

Add structure to handle ioreq server. It's server which can
handle a range of IO (MMIO and/or PIO) and emulate a PCI.
Each server as its own shared page to receive ioreq. So
we have introduced to HVM PARAM to set/get the first and
the last shared used for ioreq. With it's id, the server
knows which page it must use.

We introduce a new kind a ioreq type IOREQ_TYPE_PCICONFIG
which permit to forward easily PCI config space access.
hvm: Add functions to handle ioreq servers

This patchs add functions to help to :
  - create/destroy server
  - map/unmap IO range to a server
hvm-pci: Handle PCI config space in Xen

Add function to register a bdf with a server.
To handle cf8 -> cff we add an handler with register_portio_handle.
When Xen reveice a pio for cf8, it's store the value inside the current
vcpu until it receives a pio for cfc -> cff.
In this case, it checks if the bdf is registered and forge the ioreq
that will be forward to server later.
hvm: Change initialization/destruction of an hvm

This patch modifies initialization and the destruction of an hvm
hvm: Modify hvm_op

This patch remove useless hvm_param due to structure modification
and bind the new hypercalls to handle ioreq servers and pci.
hvm-io: IO refactoring with ioreq server

This modify several parts of the IO handle.
Each vcpu now contains a pointer to the current IO shared page.
A default shared page has been created for IO handle by Xen.
Each time that Xen receives an ioreq, it will use the default
shared page and set the right shared page when it's able to
know the server.

Moreover, all IO which are unhandleabled by Xen or by a server
will be directly discard by Xen.
hvm-io: send invalidate map cache to each registered servers

When an invalidate mapcache cache occurs, Xen need to send and
IOREQ_TYPE_INVALIDATE to each server and wait that all IO is completed.
We introduce a new function hvm_wait_on_io to wait until an IO is completed.
hvm-io: Handle server in buffered IO

As for the normal IO, Xen browses the ranges to find which server
is able to handle the IO.
There is a special case for IOREQ_TYPE_TIMEOFFSET. Indeed,
this IO must be send to all servers.
For that we have introduce a new function hvm_buffered_io_send_to_server,
which send an IO to a specify server.
xc: Add the hypercall for multiple servers

This patch add 5 hypercalls to register server, io range and PCI.
xc: Add argument to allocate more special pages

This patchs permits to allocate more special pages. Indeed, for multiple
ioreq server, we need to have 2 shared pages by server.

xc_hvm_build will take an argument which will indicate the number of
special pages we want to allocate.
xen-pci: fix bug in pci_emul.c

- don't forget to unlock spinlock
- don't handle cf9 port
hvm: remove useless hvm op HVM_PARAM_BUFIOREQ_EVTCHN
libxc: xc patch
Fix xenstore and pid path for dm
Use size to transmit the offset in data register
libxl: forget to add libxlu_dm.c
Fix save/restore for multiple device models

- Need to fix qvga, it wants to load rtl8139 but why ?
xen: allow to register ioreq server in anothe domain tan dom0
libxc: Move QEMUSIG_SIZE in right place
libxl: Allocate space for previous device model to store rom