tutorial: Repair broken links
tutorial: Fix obsolete names
tutorial: Remove the sentence about mutable fields.
Compare file:line prefix case-insensitively on win32
Paths are case insensitive on windows and rustc and compiletest may disagree on casing.
Fixes test compile-fail/circular_modules_main
rustpkg: Clean up usage messages for install
rustpkg: Handle non-numeric versions; some cleanup

Package IDs can now be of the form a/b/c#FOO, where (if a/b/c is
a git repository) FOO is any tag in the repository. Non-numeric
tags only match against package IDs with the same tag, and aren't
compared linearly like numeric versions.

While I was at it, refactored the code that calls `git clone`,
and segregated build output properly for different packages.
Warn about unused RUST_LOG specs
rustpkg: Don't assume a non-numeric refspec is a tag

Just pass it directly to git, without prefixing it with tags/
docs: Talk about tags that aren't versions in the "Package identifiers" section
Remove unnecessary #[path = "***/mod.rs"] lines.

Fixes #7922.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
rustc: reorganize driver, replace compile_upto with multiple more-obvious functions.
make RandomAccessIterator inherit from Iterator
vec: add mut_slice_{to,from}

Closes #8066
Remove dummy type parameters from iterator adaptors

With the recent fixes to method resolution, we can now remove the
dummy type parameters used as crutches in the iterator module.

For example, the zip adaptor type is just ZipIterator<T, U> now.
vec: replace some `as_mut_buf` with `to_mut_ptr`
iterator: add an Extendable trait
auto merge of #8077 : graydon/rust/reorganize-driver, r=pcwalton

The purpose here is to get rid of compile_upto, which pretty much always requires the user to read the source to figure out what it does. It's replaced by a sequence of obviously-named functions:

  - phase_1_parse_input(sess, cfg, input);
  - phase_2_configure_and_expand(sess, cfg, crate);
  - phase_3_run_analysis_passes(sess, expanded_crate);
  - phase_4_translate_to_llvm(sess, expanded_crate, &analysis, outputs);
  - phase_5_run_llvm_passes(sess, &trans, outputs);
  - phase_6_link_output(sess, &trans, outputs); 

Each of which takes what it takes and returns what it returns, with as little variation as possible in behaviour: no "pairs of options" and "pairs of control flags". You can tell if you missed a phase because you will be missing a `phase_N` call to some `N` between 1 and 6.

It does mean that people invoking librustc from outside need to write more function calls. The benefit is that they can _figure out what they're doing_ much more easily, and stop at any point, rather than further overloading the tangled logic of `compile_upto`.
auto merge of #8074 : thestinger/rust/iterator, r=cmr

d7c9bb4 r=alexcrichton
7ae17e0 r=huonw
std::rt: Add start_on_main_thread function

Applications that need to use the GUI can override start and set up the runtime using
this function.
auto merge of #7864 : brson/rust/start-on-main-thread, r=brson

Applications that need to use the GUI can override start and set up the runtime using
this function.