Disable canonical prefixes of system headers

GCC know a few pre-defined paths (relative to its location) to
search for headers, libraries, program, etc.  By default GCC prefixes
its own path(argv[0]) and calls realpath() which result in absolute
path with all symlink, . and .. removed.

It's usually good to have canonicalised paths, but absolute paths
in *.d file can cause unnecessary relinking when stale entries
in ccache cache hit

Add -no-canonical-prefixes (gcc>=4.6) and
-fno-canonical-system-headers (gcc>4.6) to disable realpath() on
prefixed paths

NOTE: This commit also helps reduse incorrect PATHS and
linker errors from clang, especially msm prebuilt clang

Change-Id: I58d739e61fb013015fb05a9c98b2132b307f915a
Signed-off-by: Bart Monhemius <bart4524@gmail.com>