rustc: Improve astconv error message
syntax: Add an each_view_item method on traits
rustc: Call str::is_empty
rustc/rusti/rustpkg: Infer packages from `extern mod` directives

This commit won't be quite as useful until I implement RUST_PATH and
until we change `extern mod` to take a general string instead of
an identifier (#5682 and #6407).

With that said, now if you're using rustpkg and a program contains:

extern mod foo;

rustpkg will attempt to search for `foo`, so that you don't have to
provide a -L directory explicitly. In addition, rustpkg will
actually try to build and install `foo`, unless it's already
installed (specifically, I tested that `extern mod extra;` would
not cause it to try to find source for `extra` and compile it
again).

This is as per #5681.

Incidentally, I changed some driver code to infer the link name
from the crate link_meta attributes. If that change isn't ok, say
something. Also, I changed the addl_lib_search_paths field in the
session options to be an @mut ~[Path] so that it can be modified
after expansion but before later phases.
testsuite: Add an xfailed test case for the new `extern mod` syntax
auto merge of #6807 : catamorphism/rust/rustpkg-extern-mod, r=catamorphism

r? @graydon Addresses #5681
Mark run-pass/unit-like-struct-drop-run.rs as xfast-fail.
auto merge of #6891 : luqmana/rust/unit-struct-drop, r=catamorphism
auto merge of #6815 : kballard/rust/hashmap-insert_or_modify_with, r=erickt

`std::hashmap::HashMap.insert_or_update_with()` is basically the opposite
of `find_or_insert_with()`. It inserts a given key-value pair if the key
does not already exist, or replaces the existing value with the output
of the passed function if it does.

This is useful because replicating this with existing functionality is awkward, especially with the current borrow-checker. In my own project I have code that looks like

	if match map.find_mut(&key) {
		None => { true }
		Some(x) => { *x += 1; false }
	} {
		map.insert(key, 0);
	}

and it took several iterations to make it look this good. The new function turns this into

    map.insert_or_update_with(key, 0, |_,x| *x += 1);
auto merge of #6896 : nickdesaulniers/rust/issue4501, r=brson

review? @brson
Add a get_mut method to accompany the get method.
auto merge of #6867 : Dretch/rust/hashmap_get_mut, r=nikomatsakis
auto merge of #6866 : pcwalton/rust/pub-extern, r=brson

r? @brson
Fix passing self by value for types passed by value

For types that are passed by value, we can't just cast the value to a
pointer, but have to use an alloca and copy the value there. This
handling is already present for all other arguments, but was missing
for "self".

Fixes #6682, #4850 and #4878
auto merge of #6879 : yichoi/rust/arm-test, r=brson

Fix #6353 and better support for ARM Test
ptr: split out borrowed pointer utilities

The ptr module is intended to be for raw pointers.

Closes #3111
auto merge of #6905 : thestinger/rust/ptr, r=catamorphism

The ptr module is intended to be for raw pointers.

Closes #3111
docs: Mention recently-added rustpkg features in the rustpkg manual
Add traits for concat and connect methods
auto merge of #6908 : bjz/rust/concat-connect, r=Aatch

This adds the following traits to `prelude`:

In `std::str`, impled on `&[~[T]]` and `&[&[T]]`:
~~~rust
pub trait StrVector {
    pub fn concat(&self) -> ~str;
    pub fn connect(&self, sep: &str) -> ~str;
}
~~~

In `std::vec`, impled on `&[~str]` and `&[&str]`:
~~~rust
pub trait VectorVector<T> {
    pub fn concat(&self) -> ~[T];
    pub fn connect(&self, sep: &T) -> ~[T];
}
~~~