Optimizing search for TOP dir

Adapting version of the search for TOP dir by James Ladan.
It relies on bash like expansion and avoids calling 'cd' and 'pwd'
commands.
Move setting of 'd' to Makefile

No reason to have this checked in every header so I've moved this (and
simplified) to Makefile.

In addition minor change for info message indicating end of makefiles
reading phase.
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
Minor fix for top build dir inside project tree
Allow for dependencies that are yet to be defined

Make use of secondary expansion so that you can refer in your
dependencies to variables that will be defined in Rules.mk that will be
read later.  If you happen to have such a need then simply add such
variable but delay its expansion by quoting the $ sign.

I have also restricted type of deps that go to AR to be only objects.
I just don't find a good use case for not doing so :P
Adding tests directory that exercises cross-dir dependencies
Merge branch 'master' of git://github.com/torpesco/nonrec-make into curdir

Since I've changed employer and I'm now full time under Linux there is
no reason to not merge this CURDIR improvement :).
Adding test directory for INCLUDES_$(d) usage
Fixing $(@RD) behaviour when TOP_BUILD_DIR is used.

Adding real_to_build_dir and build_to_real_dir and expressing some dirs
through it.
Merge pull request #13 from KholdStare/top-build-dir

Fix $(@RD) behaviour when TOP_BUILD_DIR is used
Test creating an archive out of existing archives.
Handle archive dependencies for .a files

* Pass only the objects that are newer than the archive. Should improve
  performance when only small parts of a large lib have changed.
* Reextract existing archives when combining into larger one. (otherwise
  GCC complains)