Support linking of rlib files in rustpkg
Fix indention
Add support for ARM thumb architecture
rustc: add lint for parens in if, while, match and return.

The parens in `if (true) {}` are not not necessary, so we'll warn about
them.
Remove unnecessary parentheses.
auto merge of #11663 : huonw/rust/paren-lint, r=cmr

The parens in `if (true) {}` are not necessary, so we'll warn about them.

cc #3070 and #11432
Flag all TLS functions as inline(never)

There's lots of fun rationale in the comments of the diff.

Closes #11683
Stop using hardcoded numbers for -Z options

Instead use a macro and generate them!
Remove obsoleted -Z options

* borrowck_note_pure - unused
* borrowck_note_loan - unused
* no_debug_borrows - unused
* lint_llvm - equivalent to -Z no-prepopulate-passes + --llvm-passes lint
Purge borrowck from libstd

This hasn't been in use since `@mut` was removed
Capitalize debugging opts and make them u64
Remove no-debug-borrows from the makefiles
auto merge of #11665 : alexcrichton/rust/zed-cleanup, r=brson

* Stop using hardcoded numbers that have to all get updated when something changes (inevitable errors and rebase conflicts) as well as removes some unneeded -Z options (obsoleted over time).
* Remove `std::rt::borrowck`
auto merge of #11700 : bharrisau/rust/thumb, r=alexcrichton

To build for the cortex-M series ARM processors LLC needs to be told to build for the thumb instruction set. There are two ways to do this, either with the triple "thumb\*-\*-\*" or with -march=thumb (which just overrides the triple anyway). I chose the first way.

The following will fail because the local cc doesn't know what to do with -mthumb.
````
rustc test.rs --lib --target thumb-linux-eab
error: linking with `cc` failed: exit code: 1
note: cc: error: unrecognized command line option ‘-mthumb’
````

Changing the linker works as expected.
````
rustc test.rs --lib --target thumb-linux-eabi --linker arm-none-eabi-gcc
````

Ideally I'd have the triple thumb-none-eabi, but adding a new OS looks like much more work (and I'm not familiar enough with what it does to know if it is needed).
[std::vec] Rename .get_opt() to .get()
[std::vec] Rename .head_opt() to .head(), drop the old .head() behavior
[std::vec] Rename .last_opt() to .last(), drop the old .last() behavior
[std::vec] Rename .pop_opt() to .pop(), drop the old .pop() behavior
[std::vec] Rename .shift_opt() to .shift(), drop the old .shift() behavior
[std::vec] Rename .remove_opt() to .remove(), drop the old .remove() behavior