Fix EM_SETLANGOPTIONS use.

Shouldn't reset already set flags (such as the defaults).  Call
EM_GETLANGOPTIONS to get the existing flags and then add
IMF_SPELLCHECKING to them.
Fix incorrect USE_SPELLCHECKING check.
Make Windows 8 spellchecking configurable.

Behave consistently with the other two platforms in that it is now
possible to disable spellchecking in preferences.  Not doing so was an
omission: USE_SPELLCHECKING wasn't set for Windows builds.

Reorganize the code a bit in the process and move spellchecking-related
helper functions to new spellchecking.{h,cpp} files.
Fix more incorrect USE_SPELLCHECKING checks.

Again. Freshly introduced by 179a4bfa.
Clear m_textTransPlural in DestroyContentView().

The rest of the code assumes that m_textTransPlural doesn't contain
nullptrs, yet DestroyContentView() kept the array and reset the pointers
in it.  This used to be fine when this function was only called from
PoeditFrame dtor, but no more.

Previously, this sequence of events could cause crash on Windows: open a
file, Ctrl+N, reopen the file.  Now m_textTransPlural would contain
twice as many entries, the first half of them nullptr.
Remove incorrect plural form DB entry for ar_SA.
Show both native and current locale lang names in UI lang picker.
Avoid potential double-destruction of FindFrame singleton.
Fix crashes related to closing the find window.

The use of wxWeakRef<> with incomplete class violated one definion rule,
possibly leading to memory corruption and other weirdness.  This is a
bug in wxWidgets that was fixed on the trunk, but not for 3.0.  See
http://trac.wxwidgets.org/ticket/15884

Fix by including full PoeditListCtrl definition.