debuginfo: Improved stepping for if-expressions
auto merge of #10552 : michaelwoerister/rust/ifstepping, r=brson

This PR improves the single-stepping experience for if-expression (no more jumping into the *else* branch before entering the *then* branch, no more jumping to the end of the *else* branch after finishing the *then* branch). Unfortunately I don't know of a straight-forward way of writing automated tests for this. Suggestions welcome!
temporarily disable tests on android and tagging issue number #10455
fix #10450
add path environments
android support added to test case
rt: Namespace all C functions under rust_
Use '..' as multi-field wildcard in enums and structs.
Use '..' as slice wildcard in vectors
auto merge of #10366 : brson/rust/ignore-patterns, r=alexcrichton

This replaces `*` with `..` in enums, `_` with `..` in structs, and `.._` with `..` in vectors. It adds obsolete syntax warnings for the old forms but doesn't turn them on yet because we need a snapshot.

#5830
auto merge of #10440 : brson/rust/cnamespace, r=bstrie
auto merge of #10458 : yichoi/rust/make_check_pass_android2, r=brson

To enable test on android bot #9120

 workcache::test disabled and run-pass/core-run-destroy.rs fixed on android
Implement a native mutex type

This mutex is built on top of pthreads for unix and the related windows apis on
windows. This is a straight port of the lock_and_signal type from C++ to rust.
Almost all operations on the type are unsafe, and it's definitely not
recommended for general use.

Closes #9105
Remove the C++ lock_and_signal type

A the same time this purges all runtime support needed for statically
initialized mutexes, moving all users over to the new Mutex type instead.
Move runtime files to C instead of C++

Explicitly have the only C++ portion of the runtime be one file with exception
handling. All other runtime files must now live in C and be fully defined in C.