[debug] Take advantage of __builtin_unreachable...

... for gcc under release build for implementation of MC_ASSERT.
It can provide a useful hints to the compiler for better optimization.

This also allowed sumpligying of definition for MC_UNREACHABLE.