librustc: emit loop for expr_repeat instead of 2n instructions in [x, ..n]
librustc: clean-up expr_repeat loop generation: use native integers
Expand on cleanups in trans for expr_repeat and add to tests.
auto merge of #5524 : luqmana/rust/repeat-loop, r=pcwalton

`let v = [24, ..1000];` now more or less emits the same IR as:

```Rust
let mut i = 0;
while i < 1000 {
    v[i] = 24;
    i += 1;
}
```

LLVM will still turn it into a memset if possible with optimization on.