Merge pull request #1 from madroach/string_replace_optim

Add a "recipe" algorithm from madroach
add find benchmarks

-simple implementation using BatString.find_from
-improved horspool algorithm
use unsafe_get in nreplace_recipe
use more diverse strings in string benchmarks
Add all proposed implementations of nreplace in bench_nreplace.

We try to bench these against a realistic workload composed of lines
of various length from a few chars up to 5k chars, exercising all
possible cases (short sub, long sub, not found, frequent subs, no sub...)

Gasche implementations seam to win hands down.
Minor trick to gain an allocation
Test the various contender for simple inputs ; comment out enum version

Sorry I probably introduced a bug somewhere. WIP.
add adaptive algorithm to bench_nreplace

-add horspool substring matching algorithm for large patterns
-add nreplace_thelema_adaptive,
 which will use naive find for small patters/texts,
 and horspool find for large patterns/texts.