SysListView32 ListItem IAccessible NVDAObject: add support for fetching the image ID for sub items. _getColumnImageID and _getColumnImageIDRaw.
Support for announcing if a message has an attachment or is flagged in Outlook Express! In theory should work for Windows Mail and Windows Live Mail 2009 and earlier.
Fix some cases where a profile trigger isn't exited when an application closes.

appModuleHandler.update is called from IAccessibleHandler for all events, but it currently cleans up app modules for dead processes. Sometimes, an event is fired before we fetch the old app modules in api.setFocusObject, so by that point, the app module is gone and we can't exit the trigger.
To fix this, split the cleanup code into a separate function and call it only after the old app modules have been fetched in setFocusObject.
Re #3732.
Fix more cases where a profile trigger isn't exited when an application closes.

This occurred because there were sometimes two app modules for the same process, so the profile was being triggered twice. The first instance died before the process exited, so one of the triggers wasn't exited.
The root cause was that app modules can be fetched in UIA event threads, but there was a race condition in getAppModuleFromProcessID where two app modules could be created if two threads were fetching for the same process ID at around the same time.
Fix this using a lock.
Re #3732.
No longer always cancel speech for ech focus change in browse mode. Instead only cancel if sayAll is running or if passthrough mode is being turned on.
Add support for ARIA atomic to the IAccessible2 live regions code. Also slightly refactor to better handle some corner cases such as reparnted child nodes. Re #2640
IAccessible2 live region support: collect name and or description for nodes that don't have usable text. Also watch for name and description changes if relevant is text. Re #3329
IAccessible2 live regions: ignore live region changes on or within nodes marked with aria-busy. Eventually it should delay speaking until it becomes false, but for now it just suppresses them. Re #2640
IAccessible2 live region support: make sure not to announce an addition caused by a show event if the show event is on the root of the region. Some may ask for this but there are too many other consiquences at page load etc.
VBufStorage_fieldNode_t::matchAttributes: make public so it can be accessed by backends.
Gecko vbufBackend: set isHidden on any node that is focusable and has an ARIA role of presentation. Gecko does not to this itself. Also treet them as never being interactive which stops them taking up space. Re #3781
IA2 live regions support: fix recent crash where IAccessibleHyperText was being released too many times and too early. Re #3783
nvdaHelper MS Word support: collect all spelling error offsets for the entire range, and match them to the chunks as we move through by word. Should majorly decrease the amount of checks for spelling errors and perhaps speed things up a bit.
When a configuration profile is triggered for an application and that application is exited, NVDA no longer sometimes fails to deactivate the profile.

Fixes #3732.
When entering Asian input into a control within NVDA itself (e.g. the browse mode Find dialog), "NVDA" is no longer incorrectly reported in place of the actual candidate.

When determining whether to fudge the name for the NVDA menu, the code wasn't checking whether the saved NVDA menu identity was None before comparing it. This meant that anything with an IAccessibleIdentity of None was getting the name "NVDA" before the NVDA menu was first opened.
Aside from Asian input, this seems to affect message dialogs in wxPython 3.
Fixes #3726.
Merge branch 'master' of git://git.nvaccess.org/nvda into jpbranch
Outlook appModule's chooseNVDAObjectOverlayClasses: ensure the object is an IAccessible NVDAObject before choosing any of the classes (they're all based on IAccessible). Fixes #3826
Update changes
Merge branch 't1594'. Fixes #1594
Merge branch 'ia2LiveRegionImprovements'. Fixes #2640, #3329