Refactor the Makefiles.

Confirmed to work on:
 - OpenBSD -current (May 10th snapshot)
 - OS X 10.6.8
 - OS X 10.9.1
 - Some recent version of CentOS
 - Some recent version of Debian
 - Some older version of Debian
 - Some recent version of Arch Linux

It failed on some rather old version of CentOS with GCC 3.4.6, but that's not
because of these changes.

May or may not work with BSD make (as opposed to GNU make) on BSDs other than
OpenBSD because of missing stuff in other/other.c

A solution to both issues would be to write a small configure script that would
test for the functionality being provided by other/other.c, and define the
appropriate things if they are required or not. This would also remove the
need for the (probably not as robust as it should be) uname check for Darwin
(OS X) in GNUmakefile.