use aho corasick, with word delimiters
fix up to pass existing tests, very ugly but working.