tests: Rename capitests -> tests/c-api.
libguestfs: Added gnulib includes from builddir, as suggested by the Gnulib documentation Since some modules (`getopt', for example) may copy files into the build directory, `top_builddir/lib' is needed as well as `top_srcdir/lib'. -- GNU Gnulib manual, section 2.2 Initial import
test-user-cancel: Make this test choose smaller cancellation numbers. Use a Gaussian distribution for random numbers so that smaller numbers are chosen more frequently. This also exposes a bug in this test which only happens when small numbers are chosen: If the test thread starts up quickly, it can get to guestfs_user_cancel before the guestfs_upload command has happened in the main thread. This causes the cancel to be ignored (correctly) and we end up in the second loop writing data until the disk runs out of space. Fix this by repeatedly asserting the cancel flag in the second loop.
Add user cancellation to the C API. This allows long transfers (FileIn and FileOut operations) to be cancelled by calling the signal and thread safe guestfs_user_cancel function. Most of this commit consists of a multithreaded program that tests user cancellation of uploads and downloads.
New event API (RHBZ#664558). This API allows more than one callback to be registered for each event, makes it possible to call the API from other languages, and allows [nearly all] log, debug and trace messages to be rerouted from stderr. An older version of this API was discussed on the mailing list here: https://www.redhat.com/archives/libguestfs/2010-December/msg00081.html https://www.redhat.com/archives/libguestfs/2011-January/msg00012.html This also updates guestfish to use the new API for its progress bars.
New APIs: guestfs_first_private, guestfs_next_private to walk over the private data area. This commit adds new APIs for walking over the keys and pointers in the private data area associated with each handle (note this is only applicable to the C API).
appliance: Change to using febootstrap 3.x supermin appliance. This removes all support for building the ordinary / old style appliance using febootstrap 2.x, debootstrap, debirf, fakeroot and fakechroot. Instead this uses febootstrap 3.x to build the supermin appliance in a simpler cross-distro manner.