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
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.
Fix #17156
Register snapshots
Remove BasicMacroExpander and BasicIdentMacroExpander

The spans inside of these types were always None and never used. Pass
the expander function directly instead of wrapping it in one of these
types.

[breaking-change]
Remove dependency on GCC's LTO linker plugin, since Rust does its' own LTO.
auto merge of #17157 : nikomatsakis/rust/occurs-check, r=pcwalton

Avoid ever constructing cyclic types in the first place, rather than detecting them in resolve. This simplifies logic elsewhere in the compiler, in particular on the trait reform branch.

r? @pnkfelix or @pcwalton 

cc #5527
auto merge of #17153 : steveklabnik/rust/add_link_to_manual, r=sfackler

whoops

Fixes https://github.com/rust-lang/rust/pull/16827#issuecomment-55160273
Append target-specific tools directory ($(RUST)/bin/rustlib/<triple>/bin/) to PATH during linking,
so that rustc can invoke them.