Explain assert if it fails

Property definitions

nitc :: abstract_compiler $ AAssertExpr :: explain_assert
	# Explain assert if it fails
	private fun explain_assert(v: AbstractCompilerVisitor)
	do
		var explain_assert_str = explain_assert_str
		if explain_assert_str == null then return

		var nas = v.compiler.modelbuilder.model.get_mclasses_by_name("NativeArray")
		if nas == null then return

		nas = v.compiler.modelbuilder.model.get_mclasses_by_name("Array")
		if nas == null or nas.is_empty then return

		var expr = explain_assert_str.expr(v)
		if expr == null then return

		var cstr = v.send(v.get_property("to_cstring", expr.mtype), [expr])
		if cstr == null then return

		v.add "PRINT_ERROR(\"Runtime assert: %s\\n\", {cstr});"
	end
src/compiler/abstract_compiler.nit:4013,2--4032,4