dist/prepare: trivial syntax adjustments
dist/prepare: make -o never fail

It's used by Makefile now.
dist/prepare: log to stderr

To avoid messing up the output of -o and other modes.
Makefile: expand $OBJ early

'?=' is bad because it equals '=' if $OBJ is not in the environment,
causing `dist/prepare -o` to be run many times. And when $OBJ *is* in
the environment, `dist/prepare` already outputs its value, so overriding
(as '=' and ':=' do) is fine.