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

This supersedes pull request 272, incorporating changes requested during review.

The effect of the change is to ensure the destination directory for object files is created before any make recipe attempts to write into it; this failed in the previous approach if the specified make targets included "clean" which removed that directory after Makefile.include had created it.  This had been requested during the discussion of issue #254.

The new version includes a separate commit that enables CLEAN to have directories in it, a feature I need for an application that builds libraries it needs in a subdirectory.

Please let me know if you have further concerns, and if not please merge this.  Thanks.