grep: speed up for a case to repeat failure in DFA after success in kwset

A DFA is typically much faster if it is unibyte and does not set BACKREF.
Skip kwset if the DFA is fast.  For example:

    yes abcdabc | head -50000000 >k
    env LC_ALL=C time -p src/grep -i 'abcd.bd' k

This improved real-time from 4.86 to 1.34 s.

* src/dfa.c, src/dfa.h (dfaisfast): New function.
* src/dfasearch.c (EGexecute): Use it.
dfa: fix index bug in previous patch, and simplify

* src/dfa.c, src/dfa.h (dfaisfast): Arg is const pointer.
* src/dfa.c (dfaisfast): Simplify, since supersets never contain BACKREF.
* src/dfa.h (dfaisfast): Declare to be pure.
* src/dfasearch.c (EGexecute): Fix typo that could cause buffer
read overrun when !dfafast.  Hoist duplicate computation out
of an if's then and else parts.
kwset: improve performance when large Boyer-Moore key doesn't match

* src/kwset.c (bmexec): As a heuristic, prefer memchr to seeking
by delta1 only when the latter doesn't advance much.
kwset: speed up by using memchr2

Idea suggested by Eric Blake in: http://bugs.gnu.org/17229#43
* bootstrap.conf (gnulib_modules): Add memchr2.
* src/kwset.c: Include stdint.h, for uintptr_t.  Include memchr2.h.
(struct kwset): New members gc1, gc2, gc1help.
(tr): Move earlier, so it can be used earlier.
(kwsprep): Initialize struct kwset's new members.
(memchr_kwset): Rename from memchr_trans.  Combine C and TRANS args into
new arg KWSET.  All uses changed.  Use memchr2 when appropriate.
(bmexec): Use new members instead of recomputing their values.
Increase advance_heuristic; it's just a guess, but memchr2 probably
makes it reasonable to increase it.