Output optimization: remove chunk->result.reserve()

Calling reserve() on every iteration disables the exponential buffer growing
in most STL implementations, thereby significantly decreasing the performance
for a lot of output.

This makes single-threaded dummy search (.*) 2x faster.
extern/re2: Remove locking from RE2::ReverseProg

For quick regular expression matches we can end up calling ReverseProg
frequently. Since it locks mutex for writing we can spend a lot of time
waiting for other threads to acknowledge that the program has been computed.

Using read/write barriers for safe double-checked locking fixes this, yielding
a 15x speedup (55s -> 3.5s) on 8 cores in corner cases.

Note that we only implement this optimization for successful compiles for
simplicity.