General compatibility and improvements

This was debugged remotely on OS X with help from Mazz.  The gcc
warnings on OS X are generally useful and discovered that the
compatibility code was not even working correctly.

- Initialize `text` to `NULL` in `main()`, even though it is only
  uninitialized by the `usage()` (exit) branch.
- Use a string literal as the format for errx(3).
- Include `sys/types.h` in `compat.h` so that we get `size_t`.