rustc: Strip struct fields and enum variants

Closes #11085
Rewrite SyntaxEnv

I'd really like to be able to do something like

struct MapChain<'next, K, V> {
    info: BlockInfo,
    map: HashMap<K, V>,
    next: Option<&'next mut MapChain<'next, K, V>
}

but I can't get the lifetimes to work out.
Add .insert() and .insert_char() methods to ~str.
Add testing tutorial to docs
Add a copy-on-write container.
Added Freeze trait to CowArc
Fix usage of rustc --ls on invalid files

Closes #11259
Add linting for `crate_type` attribute values.

This ensures that the `crate_type` attribute always contains a value,
and does not contain an invalid value.
Update references to rustc.rc in README.
Update AUTHORS.txt for 0.9
Bump more version numbers to 0.9
Give more effusive credit to authors
Bump version to 0.9
libextra: Add benchmarks for ebml::reader::vuint_at()
libstd: Always inline all byteswap functions
fixup! libstd: Always inline all byteswap functions
Abort on double-failure. #910

Previously this was an rtabort!, indicating a runtime bug. Promote
this to a more intentional abort and print a (slightly) more
informative error message.

Can't test this sense our test suite can't handle an abort exit.
auto merge of #11093 : alexcrichton/rust/issue-11085, r=pcwalton

Closes #11085
auto merge of #11052 : jvns/rust/testing-tutorial, r=brson

There's no explanation anywhere right now of how to do testing with Rust, so here's a basic explanation of how to write and run a test.
Add read_to_str and write_{str, line}

These methods are sorely needed on readers and writers, and I believe that the
encoding story should be solved with composition. This commit adds back the
missed functions when reading/writing strings onto generic Readers/Writers.