Add basic integration test.
Add a library for hooking getenv() in the tracee.
libhookgetenv: Use a pre-constructed pipe for communication.

This works towards using a pipe that we open in the target before it calls exec
for communication. Upcoming.
xcache: Add functionality for copying an entire environment.
Wrap asprintf to make it a little more convenient to call.
Integrate preloading of getenv hooking.

libxcache now preloads the accompanying library to hook getenv in the target
and report calls to it to the tracer. This functionality is not yet safe to use
because it blindly writes to XCACHE_FILENO.

The functionality works by execing the target with a tweaked environment that
LD_PRELOADs the helper library. Surprisingly, this technique actually works.
This commit also adds an option to disable this hooking. This exists because
the hook can fail when the target is statically linked or otherwise does not
induce libdl being loaded.