One only have to define LIBADD and the framework will automatically add what is
what is needed as a dependencies when needed so the end user does not have to
track what the libraries it depends on also depends on and everything is
centralized into on place.
This also make the USE_PRIVATELIB or INTERNALLIB magic all automated so the end
the programs does not have to know if they do rely on a privatelib or not.
Fix overlinking on most of cases by only making program depending on what they
really depends on.
Allow each program that uses LIBADD to be linked safely as static.
After this is in it will grow with addition of more libraries and the programs
will slowly switch to use it.