auto merge of #8060 : Blei/rust/fix-obsolete-extern-visibility-span, r=pcwalton
auto merge of #8067 : alexcrichton/rust/issue-3636, r=huonw

Allow some common ones that are good for examples, however.

Closes #3636
auto merge of #8070 : luqmana/rust/nom, r=alexcrichton

Fixes #5972.
auto merge of #8036 : sfackler/rust/container-impls, r=msullivan

A couple of implementations of Container::is_empty weren't exactly
self.len() == 0 so I left them alone (e.g. Treemap).
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.
auto merge of #8078 : luqmana/rust/gst, r=Aatch

Fixes #5917 by not trying to treat `&[T]` as a slice since it already is one.
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.
auto merge of #8076 : omasanori/rust/cleanup, r=huonw

A cleanup suggested on #7922.
Change concurrency primitives to standard naming conventions

To be more specific:

`UPPERCASETYPE` was changed to `UppercaseType`
`type_new` was changed to `Type::new`
`type_function(value)` was changed to `value.method()`
Fix nits.
auto merge of #7978 : sstewartgallus/rust/rename_arc, r=bblum

To be more specific:

`UPPERCASETYPE` was changed to `UppercaseType`
`type_new` was changed to `Type::new`
`type_function(value)` was changed to `value.method()`
cleanup get_ref
cleanup .iter and .iter_err