Improve shootout-reverse-complement

Lots of unsafe code and lots of branches removed. Also multithreaded.

Rust old: 1.208 seconds
Rust new: 0.761 seconds
C: 0.632 seconds
Then, you can write a function like that:
```rust
fn get<T>(s: &[T, ..256], i: u8) -> &T {
    unsafe { s.unsafe_get(i as uint) }
}
```

We directly see why it is safe as we can see that the index is u8 and the size of the slice is 256.