vfio: start with sample code from the docs
split region mapping from vfio opening.  added config read and write.
file management functions needed to handle /sys
'lib.hardware.vfio' should be a direct replacement for 'lib.hardware.pci',
except for a few extra methods that will be used for reassiging devices
functions callable from commandline to set and release drivers under VFIO grouping
split the first big 'open device' function in three parts, handling the container, the group and the device.
abstract pci vs vfio accesses per device.

keep an address->info dictionary to be able to call bus.map_pci_memory() and bus.set_bus_master() with the device as a parameter.
apps no longer require("pci"), don't have to care what the bus access method it's using.
manages IO addresses, starting at 0x+hugepagesize and growing upwards.
reduce dependencies between core.buffer, core.memory and hardware.vfio; now it's hardware.bus which ties everything up
fixes suggested on review