Moved WordCompletionSession into an accessible class

Part of getting this fix to work is going to require us to update the
completion after it is displayed to the user.  To do this we need a
derived CompletionSet type so that we can augment the displayed items.
Derivation appears to be the only way this can be done.   This is the
first step to providing access
Made IWordUtil usable from a background thread
Factored word completion code into a separate type
Now getting words from all files

It appears though that my use of async here is unfounded.  It could be
done pretty easily in a sync fashion.  Going to switch to that
Word completions now come from all open files

The word completions now come from all files, not just the one in which
the completion takes place

closes #1007
Merge pull request #1237 from jaredpar/fixes-1007

Fixes 1007