remctl 3.8

remctl is the middleware system that we use everywhere at Stanford. It's
a very simple way to run commands, constrained by ACLs, over a
GSS-API-authenticated with good encryption.

This release doesn't have a lot of obvious user-visible changes. Rather,
it's an internal refactoring and cleanup release that will make further
changes easier.

The major change is that the process event loop, which runs the command
and sends its output back over the wire to the client, now uses libevent.
This makes the code cleaner and fixes various problems previously caused
by portability, such as the lack of proper handling of SIGCHLD forcing a
short poll interval to see if the child had exited.

While working on that, I also found and cleaned up several other minor
issues: the maximum output per remctl token now matches the protocol
maximum, rather than the arbitrary and strange choice of 65,000 octets,
and I fixed a few minor memory leaks in the server and client that no one
probably would have noticed. The server also now writes its PID file
atomically.