Allow `!` as the return type of proc/closure literals

Fixes #13490.
Change rustc to say `array` instead of `vector`
core: Make TwoWaySearcher reset its prefix memory when shifting by byteset

Closes #16878.
Add many comments to TwoWaySearcher.
Add some tests for closures that return `!`
Change method lookup to require invariance for mutable references

Fixes #17033.
Fixes #15965.
Avoid ever constructing cyclic types in the first place, rather than detecting them in resolve. This simplifies logic elsewhere in the compiler. cc #5527
Prefer lualatex, xelatex, pdflatex, in that order. #12804
Add unnecessary_import_braces lint.

The lint checks any unnecessary braces around one imported item like
`use std::num::{abs};`.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
Change ItemModifier and ItemDecorator to traits

For convenience, the traits are implemented for the respective bare
functions. Change code from this:

```rust
ItemDecorator(some_function)
// or
ItemModifier(some_other_function)
```
to
```rust
ItemDecorator(box some_function)
// or
ItemModifier(box some_other_function)
```

[breaking-change]
reintroduce manual link in doc index

whoops

Fixes https://github.com/rust-lang/rust/pull/16827#issuecomment-55160273
Fix vector terminology in the manual.

fixes #17148
dave hates jokes :wink:
hello_world.rs -> main.rs
Remove much of the modules section.

This part can get _really_ confusing, and we want to make sure that
people succeed in the guide. I plan on making a module guide in the
future to replace the information here.
remove rich hickey love
don't say 'semantic'
Disable ASLR on Windows, for now.
Escape backslashes in debugger scripts.
Use DWARF4 on Windows.