Remove VFIO support to simplify memory and device access

VFIO is a Linux kernel interface for controlling the IOMMU hardware.
https://www.kernel.org/doc/Documentation/vfio.txt

VFIO is a valuable feature and we do want to support it over the long
term. However, right now we do not completely use/trust/understand it,
and by removing it we can simplify the code in several ways:

- Remove C code that uses a complex Linux API.
- Remove Linux's vfio.h that we imported to work around build problems.
- Eliminate code duplication between pci.lua, vfio.lua, and bus.lua.
- Eliminate complex hooks/indirections in memory.lua.
- Eliminate the bus scan from app.lua (which slowed down startup).
- buffer.physical is now known to always be an actual physical address.

So let us re-introduce this feature in the future when we need it
enough to justify its complexity, and when we have the time to work
through all of its quirks and implications.

OBTW: also removed the memory.use_hugetlb option. Now snabbswitch
always uses HugeTLB. Again, we can reintroduce this when we need it.
engine.configure(): Fix order of operations during config update

Ensure that 'stop' actions are executed before 'start' actions.

Otherwise there can be problems when a new app and an old app both
want to use the same resource and the new app starts before the old
one has terminated. For example, when replacing an app like intel10g
that needs exclusive use of a PCI device.
[intel10g, pci] Exclusively lock PCI devices before use

This is to prevent two snabb processes from attempting to control the
same PCI device at the same time, which could lead to... hilarity.

This change also involves an explicit close operation on the PCI
device when the intel app is stopped.
[lib.nfv.config] More verbose debug output in selftest
Merge pull request #259 from lukego/rm-vfio

Remove VFIO support to simplify memory and device access