Makefile.include: support make clean all

Historically $(OBJECTDIR) was created when Makefile.include is read.  A
consequence is that combining "clean" with "all" (or any other build
target) results in an error because the clean removes the object
directory that is required to exist when building dependencies.
Creating $(OBJECTDIR) on-demand ensures it is present when needed.

Removed creation of $(OBJECTDIR) on initial read, and added an order-only
dependency forcing its creation all Makefile* rules where the target is
explicitly in $(OBJECTDIR).

Where Makefiles specify a target using a variable that has a default value
in $(OBJECTDIR), add an order dependency that is specific to the target.

Output directory creation uses double-colon rules to avoid make warnings if
different rules produce the same target after variables are expanded.