compile: enable include -I of standard libs

as we'll shift to shared libs, and it does not cause any problems
remove old code workaround (for gcc4.1)

that compiler is 6 years old, I seriously doubt it could be installed on any recent ditribution,
safe to delete this hack
gitignore: remove nonexisting file reference
compiling: replace hard-coded gcc/g++ reference with $CXX

so that compiler found by ./configure can be used
(support for llvm/clang)
build: proper make clean target

recursively call make clean for $subdirs
and call cleanup.sh script (nice if removed later)
and setup.py --clean (dtto)
gcc/clang compatibility fix (lvalue cast)

be more strict, dont allow lvalue casts (clang default, gcc does allow it)
gcc/clang: fix function declaration after all templates defined

just reorder some template/function definitions, so that all templates required are already defined (above)
see http://clang.llvm.org/compatibility.html#dep_lookup
small fix: if-else not needed, always include

the #include is used in both cases
gcc/clang: fix template lookup

this is for adhesing to C++ coding standards,
fix unknown operator<<  ...
see http://clang.llvm.org/compatibility.html#dep_lookup
fix provided by placing a declaration (of operator<< template) before the function which
uses it.