Replace inline communication protocol with a separate file.

By separating the communication protocol out this way, we can share code
between libxcache and libhookgetenv and avoid the protocol functions getting
out of sync. This changeset also changes the encoding scheme for string data to
align it more closely with established RPC communication schemes.
Clarify a comment.
libhookgetenv: Pass xcache pipe through an environment variable.

This is slightly nicer than hardcoding things at compile time. The previous
scheme required juggling file descriptors just prior to forking to make sure
the pipe file descriptor is actually the pipe we need. The parent still
currently ignores this information.