build: Tell make(1) that the compiler creates .d files.
The best way to convey the information that two files are created
by the same command involves rules with grouped targets (indicated
by the &: separator between targets and prerequisites). However,
since grouped targets is a relatively new feature of make(1) and we
would like to keep supporting older versions, we use ordinary rules
with multiple targets. This should not be worse because the compiler
is still run only once for each source file.
The patch also introduces the pre_deps make variable to make sure the
files listed in this variable are present before we run the compiler.