build: all .o objects no longer depend on exports.h

The build system had an unconditional dependency declared:

 %.o: %.c $(EXPORTS_H)

The result of this was that when any .c file was changed, lua would regenerate
its exports, which would then trigger a rebuild of EVERYTHING. In truth, most
things don't really depend on exports.h.

This patch explicitly declares dependencies on exports.h. The dependency
generator generates these dependencies too, but the explicit declarations are
required for the initial build, when the generated dependencies aren't yet
available
build: simplified compilation rules for toplevel rules.mk

There were multiple %.o:%.c rules defined that more or less said the same thing.
This patch consolidates them. There's much similar boilerplate in other modules
(libtu/build/rules.mk for instance) that this patch doesn't touch. It would be a
good idea to consolidate all the logic.
build: mkexports rule is now a written as a multi-target-generating rule
build: dependencies are now ALWAYS generated. Also simpler implementation

Previously you didn't get header dependencies, unless you asked for them. Now
this information is always generated, and it's done together with the
compilation step. This is simple and robust. The only way a dependency
relationship is missed is the first time you add a #include. Rebuilding that
source file once adds the dependency