num: Slightly optimize bigint
num: Migrate `~[T]` to `std::vec_ng::Vec`
Refactored take_unwrap (libstd/option.rs)

Using pattern matching instead of is_some + unwrap
auto merge of #12924 : Florob/rust/bigint, r=alexcrichton

This is a minor optimization of the bignum module. The improvements mostly come from avoiding allocations and boundary checks. This also switches all of libnum to vec_ng::Vec.
Fix a test that was missed in the liblog PR
auto merge of #12933 : edwardw/rust/fallout, r=huonw

The same test was missed in chan/port renaming PR #12815 and was fixed in #12880:

> This was missed because it is skipped on linux and windows, and the mac bots were moving at the time the PR landed.

It seems the same happened to the liblog PR.
Asked if missing (), then asks about an anonymous function. Also added test.
getopts missing docs
auto merge of #12931 : aochagavia/rust/option-take_unwrap, r=cmr

Using pattern matching instead of is_some + unwrap
Document the Tm struct and fields
auto merge of #12937 : sinistersnare/rust/method-error-message, r=huonw

its a common (yet easily fixable) error to just forget parens at the end of getter-like methods without any arguments.

The current error message for that case asks for an anonymous function, this patch adds a note asking for either an anonymous function, or for trailing parens.

This is my first contribution! do i need to do anything else?
auto merge of #12940 : cadencemarseille/rust/time-doc, r=alexcrichton
auto merge of #12942 : alan-andrade/rust/docathon-getopts, r=alexcrichton

https://docs.google.com/spreadsheet/ccc?key=0An9tLRVf1SSfdE9jX1Q2QkhiUGVwTnh5YTJnMHVUYXc&usp=sharing#gid=6
Apply variance rule to type and self parameter substitution

Currently, rustc only does so for regions substitution. Applies the same
rule to type and self parameter substitution.

With all three substitutions on, the following becomes legitimate:

```rust
fn foo<'a, 'b>(x: &'b Option<&'a int>) -> Option<&'b int> {
    *x
}
```

`x` here is contravariant with respect to the region parameter `b`, so
it is eligible to the return position, also contravariant.

It is also found that rustc handled one special case incorrectly. In
variance inference pass, constraints are added and then solved. But rustc
didn't add any constraint for nullary generic enum and struct so they
were classified as bivariant, the default. Then the following two
implementations of `Foo`:

```rust
pub struct S<T>;

impl Foo for S<int> {
    fn bar(&self) {}
}

impl Foo for S<uint> {
    fn bar(&self) {}
}
```

would be identical therefor conflicting under type substitution, which
is incorrect.

Closes #3598.
Closes #5781.