Make MessageUtils more efficient

Caches the "per-word" patterns so we don't have to redefine them
everytime we go through the loop.  Much faster!