Moving header/footer to evaluated variables

This should be a bit faster - since header/footer is included only once
and later is evaluated internally by make.
Additionally this does not pollute internal make variable MAKEFILE_LIST
with multiple instances of header.mk and footer.mk.
Get rid of .fake_file dependency

From now on OBJDIR is order-only dependency
Fix CLEAN_$(d) assignment for absolute paths

Another fix from James Ladan (torpesco).  Thank you!
Preserve order of dependencies in tgt_rule
Get rid of ^R in examples
Fix typos in [^?]R description
Computed 'skeleton' macro

Instead of listing all entries in 'skeleton' macro the definition of
this macro is now computed from simple lists of suffix mappings.  This
should ease adding of new languages.  See description of AUTO_RULES and
AUTO_TD_RULES in def_rules.mk for syntax of these variables.
Improve out of project tree builds

For the out of the project tree builds there is no need to replicate
under TOP_BUILD_DIR whole directory stack leading to the actual project
directory.  This is now removed and the project is built now right under
TOP_BUILD_DIR.  In addition:
- OBJ_PATH has been optimized (no need for constant TOP_BUILD_DIR testing)
- clean targets has been corrected
- echo_cmd also has been corrected
Add optional inclusion of user_rules.mk

Actually the config and rules files were meant to be updated by user
however in order to ease keeping up with the upstream I now include
optional user_rules.mk so the user can add it's own rules there without
modifying original files.  E.g. in user_rules.mk one can add support for
assembler like:

AUTO_RULES += .o:.S
COMPILE.S = $(call echo_cmd,AS $<) $(AS) $(ASLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c