Enable privacy check for enum methods.
Fix incorrect non-exhaustive matching for fixed length vecs

Code like this is fixed now:

```
fn foo(p: [u8, ..4]) {
    match p {
        [a, b, c, d] => {}
    };
}
```

Invalid constructors are not reported as errors yet:

```
fn foo(p: [u8, ..4]) {
    match p {
        [_, _, _] => {} // this should be error
        [_, _, _, _, _, .._] => {} // and this
        _ => {}
    }
}
```

Issue #8311 is partially fixed by this commit. Fixed-length arrays in
let statement are not yet allowed:

```
let [a, b, c] = [1, 2, 3]; // still fails
```
rust-mode: make indentation customizable

Add new variable rust-indent-offset, defaulting to
the old value, and use it.
typo in tutorial
Add #[inline] to impl Zero for ()

Follow-up to #8155
Allow attributes to appear as macro arguments

Fixes #8393
Implement `lower_bound_iter`/`upper_bound_iter` for TrieMap/TrieSet
Switch to using .enumerate() some places in _match.
Fix vector pattern matching. Closes #6909.
Implement an `address_insignificant` attribute

This can be applied to statics and it will indicate that LLVM will attempt to
merge the constant in .data with other statics.

I have preliminarily applied this to all of the statics generated by the new
`ifmt!` syntax extension. I compiled a file with 1000 calls to `ifmt!` and a
separate file with 1000 calls to `fmt!` to compare the sizes, and the results
were:

fmt           310k
ifmt (before) 529k
ifmt (after)  202k

This now means that ifmt! is both faster and smaller than fmt!, yay!
Fix some warnings.
Fix interaction between default matches and guards. Closes #3121.
Mass rename of .consume{,_iter}() to .move_iter()

cc #7887
Clean up some unused imports in tests
std: merge iterator::DoubleEndedIterator and DoubleEndedIteratorUtil
std: merge Iterator and IteratorUtil
std: Rename Iterator.transform -> .map

cc #5898
std: Iterator.take_ -> .take
std: Iterator.flat_map_ -> .flat_map
std: Iterator.chain_ -> .chain