Add targets to run a C file through the preprocessor.

The .i target simply runs it through the preprocessor. The -i.c target
takes that and then removes blank lines and lines with #line. Probably
the -i.c should become the .i target.
Refector revectoring to split it into the support definitions and the uses.

This is still not quite done, but it's closer. Right now it looks like
it will be helpful to more or less generally define revectoring functions
in order to provide more frequent synchronization points. Also, it looks
like exit() does not call __exit(), which you expect it to do, which means
that there is at least one non-system call function to revector.