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
Why not `start`, `end`? Most call sites seem like they would prefer that.