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