Implement BigInt and BigUint.
Move BigUint and BigDIgit to std::bigint.
Convert std::bigint to explicit self.
Impl Zero, One of BigInt, BigUint
Convert @[BigDigit] to ~[BigDigit]
Fix two minor issues in the tutorial.

Remove an extraneous 'then', and replace 'second' with 'first'.
Add option::get_zero

r=brson

Closes #3797
core: fix windows breakage, r=burningtree.
Make either::{partition, flip, to_result} take their arguments by-value

Addresses an XXX

r=pcwalton
Rename option::get_default => get_or_default, get_zero => get_or_zero
Merge remote-tracking branch 'superoptimizer/master' into HEAD

Conflicts:
	doc/tutorial.md
Add Mark Lacey to AUTHORS
librustc: Stop generating first-class aggregates in visit glue, since they kick us off fast isel. Closes #4352. rs=minor-perf-improvement
Trivial cleanup: use enum_is_univariant; no functional change intended.
Make consts of degenerate nullary enums not ICE.

This makes the const construction code match the logic in type_of.
Add a test for nullary univariant enums.
rt: Stop zeroing out all allocations. Unobservable perf win. Closes #2682. rs=negligible-perf-win
librustc: Fix unconditional ty_to_str call in ty.rs. Was heaviest path in allocation. Negligible perf win. rs=perf-fix
librustc: Remove some string allocations. rs=perf
librustc: Convert some large structural records over to structs. rs=perf

No effect on compile-time performance.