Split into "words", with word boundaries indicated by the given
predicate. Satisfies words === wordsBy isSpace; equivalent to split .
dropBlanks . dropDelims . whenElt. For example:
>>> wordsBy (=='x') (BV.fromList "dogxxxcatxbirdxx")
["dog","cat","bird"]