Change gcc to clang in sample Makefiles

gcc => clang
g++ => clang++
get compatible with cygwin
remove duplicate targets
add missing file
1. clang does not support forward declared types in templates (http://clang.llvm.org/compatibility.html#undep_incomplete)
2. clang does not support default values for forward declared types
Fixed tiny hardcode in Makefile