Improve error handling
This change allow for finer configuration of asserts. Building in
release mode no longer enforces asserts. The asserts now mark
unreachable paths as unreachable if compiler supports it. The change
also allows to use of __builtin_trap() if compiler supports it, which
is more useful when running in debugger.
Signed-off-by: Emil Ohlsson emil.ohlsson@arm.com