Prevent eval_const_expr_partial hides prior error in expr_cast arm.

This will help not to meet confusing errors.
In issue #5873, the error was "expected constant expr for vector length: Can't cast str to int".
It was originally "expected constant expr for vector length: Non-constant path in constant expr"
This patch make the original error to be printed.
More valgrind suppressions
core: add vec::bsearch.
core: replace unicode match exprs with bsearch in const arrays, minor perf win.