Makefile.include: support extending CLEAN with directories

Use recursive remove for $(CLEAN) to support applications that extended it
with directories that should be removed.
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 or implicitly in $(OBJECTDIR).
Merge pull request #279 from pabigot/push/make-clean-all

Add support for subdirectories in CLEAN and for "make clean all"