Just noticed something weird in the method that filters out candidates
for words to add/remove. We're only supposed to add a word to the word
suggestions if it has at least one word-level feature in DataAnalyzer's
topAttributes array, and the method that adds word level features to the
word objects only adds features from this array. But instead of just
checking to see if the word's wordLevelFeaturesFound is empty, we have a
loop that iterates through the wordLevelFeaturesFound and the
topAttributes and checks if any features match. However, the indices it
uses to check this do not correspond to each other at all. If there are
enough features these indices will eventually match up by chance, so
most words with features will be added, but if there aren't many word
level features words will be incorrectly excluded. So, now it just
simply checks if wordLevelFeaturesFound is empty and if not adds the
word to word suggestions. 

Also I made a stupid mistake that broke the anonymity bar when I removed
the execution of the updateBarThread during initial processing. All
further updates to the bar depend on this thread finishing, so instead
of removing the call to the thread I removed the call to updateBar().