Split into "words", with word boundaries indicated by the given
predicate. Satisfies
words === wordsBy isSpace;
equivalent to
split . dropBlanks . dropDelims
. whenElt.
>>> wordsBy (`elem` ",;.?! ") "Hello there, world! How?"
["Hello","there","world","How"]
>>> wordsBy (=='x') "dogxxxcatxbirdxx"
["dog","cat","bird"]