checkpoint
Fix a bug where calling p.destroy() on the result of calling
start_program(...) would cause a segfault when p went
out of scope due to out_file/err_file being closed twice.
Update doc-comments to reflect the current year and trait
names now being capitalized.
Change the behaviour of core::run::Program.destroy to
forcibly terminate the program (as suggested in issue #5632)
cmp: derive Clone for Ordering
cmp: add Ord+TotalOrd impls for Ordering itself
libcore: fix overflow/underflow in range_step
Include definition of tuples for destructuring.

Updates the tutorial to include a simple definition for tuples in
section 4.2. Fixes #5132.
Update help text to match behavior
core: Remove all but one drop block in favor of `finally`
Fix comment to match style of surrounding text
auto merge of #5788 : danluu/rust/rusti_clear, r=bstrie

The old help text reads "clear the screen", but :clear seems intended to do something completely different. I'm not sure what the intent is. If it's really supposed to clear the screen, not only does it not clear the screen, it does something completely different.

```
rusti> fn foo() { println("called foo!") }
()
rusti> foo();
called foo!
()
rusti> :clear
rusti> foo();
<anon>:34:0: 34:3 error: unresolved name: `foo`.
<anon>:34 foo();
```

Per the contributor guidelines, here's the reason there's no testcase: it's a comment string.
auto merge of #5769 : gifnksm/rust/range_step, r=bstrie

`uint::range_step` or `int::range_step` causes overflow or underflow as following.
code:
```rust
fn main() {
    for uint::range_step(3, 0, -2) |n| {
        println(fmt!("%u", n));
    }
}
```
output:
```
3
1
18446744073709551615
18446744073709551613
...
```
This commit fixes this behavior as follows.
```
3
1
```
Cleanup substitutions and treatment of generics around traits in a number of ways.

- In a TraitRef, use the self type consistently to refer to the Self type:
  - trait ref in `impl Trait<A,B,C> for S` has a self type of `S`.
  - trait ref in `A:Trait` has the self type `A`
  - trait ref associated with a trait decl has self type `Self`
  - trait ref associated with a supertype has self type `Self`
  - trait ref in an object type `@Trait` has no self type

- Rewrite `each_bound_traits_and_supertraits` to perform
  substitutions as it goes, and thus yield a series of trait refs
  that are always in the same 'namespace' as the type parameter
  bound given as input.  Before, we left this to the caller, but
  this doesn't work because the caller lacks adequare information
  to perform the type substitutions correctly.

- For provided methods, substitute the generics involved in the provided
  method correctly.

- Introduce TypeParameterDef, which tracks the bounds declared on a type
  parameter and brings them together with the def_id and (in the future)
  other information (maybe even the parameter's name!).

- Introduce Subst trait, which helps to cleanup a lot of the
  repetitive code involved with doing type substitution.

- Introduce Repr trait, which makes debug printouts far more convenient.

Fixes #4183.  Needed for #5656.
Allow lint modes to be used on unused variables and dead assignments
Bump version to 0.7-pre
auto merge of #5805 : brson/rust/0.7-pre, r=brson
vim: syntax highlight for inner doc comment
Apply comments from tjc
Add #[start] attribute to define a new entry point function