mk: tests.mk simplify the method to clean arm testing directory
etc: modify adb_run_wrapper.sh to avoid 'expr' unrecognization at some android devices
etc: add TEST_EXEC_ENV for run-pass to adb_run_wrapper.sh
test: adjust some test cases of run-pass for android
std: fix stat struct of android (SEGV error from run-pass/stat.rs on android)
auto merge of #7128 : yichoi/rust/fix_sometc, r=brson

- Fix stat struct for Android (found by SEGV at run-pass/stat.rs)
- Adjust some test cases to rpass for Android 
- Modify some script to rpass for Android
Avoid unnecessary scratch datums for by-copy function arguments

Currently, by-copy function arguments are always stored into a scratch
datum, which serves two purposes.  First, it is required to be able to
have a temporary cleanup, in case that the call fails before the callee
actually takes ownership of the value. Second, if the argument is to be
passed by reference, the copy is required, so that the function doesn't
get a reference to the original value.

But in case that the datum does not need a drop glue call and it is
passed by value, there's no need to perform the extra copy.
Avoid pointless allocas for "nil" return values

By using "void" instead of "{}" as the LLVM type for nil, we can avoid
the alloca/store/load sequence for the return value, resulting in less
and simpler IR code.

This reduces compile times by about 10%.