Automate progtab size count

use sizeof(progtab)/sizeof(*progtab) to determine number of programs
Improved build system

Automatically scans src directory to generate lists of files that need
to be made.  These lists are written to the file names.mk, which is
included in the main makefile.

Dependencies are automatically generated (with gcc -MM) and stored in .d
files under the 'make' directory.  These are included in the main
makefile.

maintainer-clean target is added to remove binaries in addition to
generated makefiles.