Better documentation for --emit-llvm option.

Document possible use with -S option.
Hide stuff that are not used outside of _match.rs
Added testcases for `match` keyword

Added testcases for `match` keyword including test for issue #5625.
Fix bug in `match`ing struct patterns

Code that collects fields in struct-like patterns used to ignore
wildcard patterns like `Foo{_}`. But `enter_defaults` considered
struct-like patterns as default in order to overcome this
(accoring to my understanding of situation).

However such behaviour caused code like this:
```
enum E {
    Foo{f: int},
    Bar
}
let e = Bar;
match e {
    Foo{f: _f} => { /* do something (1) */ }
    _ => { /* do something (2) */ }
}
```
consider pattern `Foo{f: _f}` as default. That caused inproper behaviour
and even segfaults while trying to destruct `Bar` as `Foo{f: _f}`.
Issues: #5625 , #5530.

This patch fixes `collect_record_or_struct_fields` to split cases of
single wildcard struct-like pattern and no struct-like pattern at all.
Former case resolved with `enter_rec_or_struct` (and not with
`enter_defaults`).

Closes #5625.
Closes #5530.
extra: Remove all .each methods in smallintmap
std: Fix for-range loops that can use iterators

Fix inappropriate for-range loops to use for-iterator constructs (or
other appropriate solution) instead.
Bugfix .each_edge in middle/graph.rs

Edge iterator used the length of the nodes vector, must be a mistake.
rustc: Fix for-range loops that can use iterators

Transform range loops that can be regular iterator loops.
Implement DoubleEndedIterator on Range

Range is now invertable as long as its element type conforms to Integer.

Remove int::range_rev() et al in favor of range().invert().
Forbid `priv` where it has no effect

This is everywhere except struct fields and enum variants.
Add missing getopts::groups::optflagmulti function
Turn OptGroups into a main opt and a main and an aliased opts

This way opt_present("apple") will match no matter if the user passed -a or --apple
add inflate_bytes_zlib to exra::flate
add extra::flate::deflate_bytes_zlib and a test
extra: add `internal` to {de,in}flate_bytes_ naming to address nit
Fix unit structs in cross-crate situtations
Change Freeze to Static
Change const to static
Document rand module with more emphasis on cryptographic security
Add weak_rng to get a random algo that puts more emphasis on speed than security