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.
libcore: vec::windowed iterates, not allocates.
auto merge of #5904 : huonw/rust/core-vec-windowed, r=thestinger

And add some documentation.
auto merge of #5890 : youknowone/rust/const-eval, r=catamorphism

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" (though still invalid error).
This patch make the original error to be printed.
More valgrind suppressions
auto merge of #5913 : brson/rust/valgrind, r=brson