Add heap sort implementation

but then start will overflow, and the loop will never exit:

```` rust
fn main() {
    let mut a:uint = 5;
    
    while a >= 0 {
        println!("{}", a);
        a -= 1;
    }
    
    println!("Done");
}

5
4
3
2
1
0
18446744073709551615
18446744073709551614
18446744073709551613
18446744073709551612
18446744073709551611
18446744073709551610
18446744073709551609
18446744073709551608
18446744073709551607
18446744073709551606
18446744073709551605
18446744073709551604
18446744073709551603
18446744073709551602
18446744073709551601
18446744073709551600
18446744073709551599
18446744073709551598
18446744073709551597
18446744073709551596

````