Support spellchecking from multiple script codes

Prior to this commit, the multi-lingual spell checker used the first
dictionary to detect incorrect words. It then used the custom dictionary
to skip over the possibly incorrect words that are in the custom
dictionary. If the word was still not validated, it then checked the remaining
dictionaries to see if any one would validate the word. Since checking the
custom dictionary is much cheaper than a standard dictionary, it checks it
before checking the remaining dictionaries.

Since the standard dictionary validates a word that it cannot parse, words
written with a different script code will appear to be correct even if they
aren't. To fix this issue, we run the same algorithm but separately for
a group of languages belonging to each script code. Once we have a list
of incorrect words from each group, we return the first incorrectly spelled
word that appears in the text.
Allow the application specify the font used in tooltips
Implement a built-in JsWidget plugin

This is a built-in plugin that fires DOM events on certain callbacks.
Add WebView::embedChild
Remove code from bugfix/nonWindowContexts

This code is duplicated in the bugfix/nonWindowContexts branch.  Remove it from
this branch and make the 'setNonWindowContextsAllowed' call conditional based
on whether the bugfix/nonWindowContexts branch is merged or not.