build: enable O3 optimization flag

Change-Id: I74ba9e58eb446e042430061740a76dfe0f24d818
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

Change-Id: I58d739e61fb013015fb05a9c98b2132b307f915a

Conflicts:
	core/clang/config.mk
	core/combo/TARGET_linux-arm64.mk
	core/combo/TARGET_linux-mips64.mk
	core/combo/TARGET_linux-x86.mk
	core/combo/TARGET_linux-x86_64.mk

Conflicts:
	core/llvm_config.mk