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
It would be nice for the benchmarks to show off *idiomatic* Rust code rather than copying C into rust, and usage of `static mut` globals isn't necessarily idiomatic. Does this take a significant perf hit compared to calculating the tables and putting them into an `Arc`?