Use proxy targets to update the auto-generated header files
interpret_protos.h and language.h only if they change. This can cause
a target like language.h to be out-of-date many times, but since it
runs fast that's not an issue. This technique only works well in
make's that stat the target after the rule and recalculate the
dependencies then. GNU make works like that.
Also moved interpret_protos.h to the source dir and added