testsuite: Test for #6132

Closes #6132
rustc: Remove FIXME (see #4949)
testsuite: Test for #4447

Closes #4447
testsuite: Un-xfail test for #5917
rustc: More helpful error message when using a struct type like a function

Closes #6702
rustpkg: Add test for #7338. Closes #7338
auto merge of #8595 : vadimcn/rust/print_link_args, r=alexcrichton

This resolves issue #8569
rustpkg: Re-enable some more tests
oops v2, apparently writing std::comm::stream() doesn't work on check-fast; fix this
test: Add test for #7563. Closes #7563
rustpkg: Add test for #7348. Closes #7348
auto merge of #8562 : bblum/rust/superkinds, r=nikomatsakis

For #7083.

The metadata issue with the old version is now fixed. Ready for review.

This is also not the full solution to #7083, because this is not supported yet:
```
trait Foo : Send { }

impl <T: Send> Foo for T { }

fn foo<T: Foo>(val: T, chan: std::comm::Chan<T>) {
    chan.send(val);
}
```

cc @nikomatsakis
auto merge of #8570 : catamorphism/rust/2013-08-16-rollup, r=catamorphism

Nothing arguable here, as far as I can tell.
auto merge of #8590 : blake2-ppc/rust/std-str, r=alexcrichton

Implement CharIterator as a separate struct, so that it can be .clone()'d. Fix `.char_range_at_reverse` so that it performs better, closer to the forwards version. This makes the reverse iterators and users like `.rfind()` perform better.

    Before
    test str::bench::char_iterator ... bench: 146 ns/iter (+/- 0)
    test str::bench::char_iterator_ascii ... bench: 397 ns/iter (+/- 49)
    test str::bench::char_iterator_rev ... bench: 576 ns/iter (+/- 8)
    test str::bench::char_offset_iterator ... bench: 128 ns/iter (+/- 2)
    test str::bench::char_offset_iterator_rev ... bench: 425 ns/iter (+/- 59)
    
    After
    test str::bench::char_iterator ... bench: 130 ns/iter (+/- 1)
    test str::bench::char_iterator_ascii ... bench: 307 ns/iter (+/- 5)
    test str::bench::char_iterator_rev ... bench: 185 ns/iter (+/- 8)
    test str::bench::char_offset_iterator ... bench: 131 ns/iter (+/- 13)
    test str::bench::char_offset_iterator_rev ... bench: 183 ns/iter (+/- 2)

To be able to use a string slice to represent the CharIterator, a function `slice_unchecked` is added, that does the same as `slice_bytes` but without any boundary checks.

It would be possible to implement CharIterator with pointer arithmetic to make it *much more efficient*, but since vec iterator is still improving, it's too early to attempt to re-implement it in other places. Hopefully CharIterator can be implemented on top of vec iterator without any unsafe code later.

Additional changes fix the documentation about null termination.
Make json::to_xxx(&Json) fns Json::to_xxx(&self)

to_str, to_pretty_str, to_writer, and to_pretty_writer were at the top
level of extra::json, this moves them into an impl for Json to match
with what's been done for the rest of libextra and libstd.
auto merge of #8616 : kballard/rust/url-parse-errors, r=catamorphism

Fixes issue #8612.
On Windows, use g++ for linking, instead of gcc.
This is required in order to produce linked modules that perform correct registration of unwind tables.
Un-disable stack unwinding on Windows.
Emit unwind info in rustrt assembly files on Windows.
Compile via external assembler on Windows.