Don't rely on gcc extensions

Make the code more compatible with different compilers.
clang doesn't allow extra static qualifiers on template
specializations, const qualifiers on function types,
or inline attributes on lambda functions, and is more
picky about casting away constness with reinterpret_cast.

These modifications are compatible with both gcc and
clang.

Change-Id: I739b10df2780bec537827a13679fd2bcc2cc7188
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>

Conflicts:
	runtime/entrypoints/entrypoint_utils.h
	runtime/entrypoints/portable/portable_invoke_entrypoints.cc
	runtime/entrypoints/quick/quick_invoke_entrypoints.cc
	runtime/gc/collector/mark_sweep.cc
	runtime/gc/collector/semi_space.cc
	runtime/interpreter/interpreter_common.h
Enable building ART with clang

Change-Id: I36bf66a90dfc03d27e2888d24d074a37fdac67d3

Fix compile error and silence the chatty ART if it is built with clang

Change-Id: Ia23c95fc56d0334622f0ff1e59ed7d579af16211
Fix build.
Reduce logging verbosity by default to ERROR

This is probably not the best way to disable logging spam. It'll be changed if there is a better solution.

Change-Id: Ie4af4a8897c109c364ea65745c55105c6d88485b
Merge remote-tracking branch 'github/kk4.4' into HEAD