Replace NVDA's "move to flat review" and "move to object at flat review position" scripts with a new concept of review modes. There are three modes: object, document and screen. They can be switched between with NVDA+numpad7 (next) and NVDA+numpad1 (previous). Switch to a mode no longer moves the navigator object automatically, though moving the review position within a mode does.

Specific changes:
	* Add review.py, which contains functions for fetching a TextInfo instance suitable for reviewing in or around the given object for a review mode. It also contains functions to switch between these modes.
	api.setReviewPosition: an extra keyword argument "clearNavigatorObject" (true by default) allows the caller to disable clearing of the navigator object (if set to false).
	api.getReviewPosition: Make use of review.getPositionForCurrentMode. This means that if the review position must be calculated from the navigator object, it will always take the review mode into account.
	globalCommands: The old moveTo/from flatReview scripts have been renamed to reviewMode_next and reviewMode_previous respectively, and they now use review.nextMode to switch modes.

	Note: currently Screen review uses the root (most parent) window of the focus. We may wish to eventually do some kind of process-wide displayModel access.
globalCommands review movement scripts: only set the review position if its actually moved. Also don't bother copying the TextInfo specifically for handing to api.setReviewPosition as  api.setReviewPosition already does this.
Caret changes in objects no longer force the review position out of screen or document mode. However moving the caret in a virtualBuffer does force document mode.

Specifically:
* review: add a getCurrentMode function, which returns the ID of the current mode ('screen', 'document', or 'object').
* review.setCurrentMode: add an updateReviewPosition optional keyword argument set to True by default. If false, then api.setReviewPosition will not be called from within.
* review: add a handleCaretMove function, which is now used by caret movement code and events to correctly update the review position if needed. If the caret has moved on an NVDAObject, the review position is only updated if the review mode is object, as well as the object having to be the navigator object and only if the user's config allows the update (follows caret). If the caret moved on a treeInterceptor however, document review mode is activated.
* api.setNavigatorObject: added a new isFocus optional keyword argument, set to false by default. This is only set to true when called from setFocusObject to denote  this was because of a focus change. If isFocus is true, and this is for an object in a virtualBuffer, and the review position is already within the span of the object, then the review position is not clared, as if it did it would be come less accurate.
When reviewing text, only update the navigator object for document and screen review modes. for object review the navigator object should always be the direct object of the review position.

Specifically:
* api.getNavigatorObject: if the navigator object must be calculated from the review position, use position.obj if the review mode is 'object', otherwise use pos.NVDAObjectAtStart.
Merge branch 'master' into reviewModes
Update user guide to talk about review modes, which replaces flat review.
Allow the UIA NVDAObject to be correctly defined even when UI Automation is not available, therefore allowing for code which may test for a UIA NVDAObject instance, with out having to test if UIA is available before even importing the UIA  NVDAObject class.

Specifically: NVDAUnitsToUIAUnits has been moved from NVDAObjects.UIA to _UIAHandler.
explorer appModule: no longer bother checking for the availability of UIA all the time -- its now safe to use the UIA NVDAObject even if UIA is not available.
UIA: map UIA's selectionItem_elementSelected event to an NVDA event of UIA_elementSelected, and in the base UIA NVDAObject implement event_UIA_elementSelected so that it simply calls event_stateChange. This allows custom code to specifically handle this event yet keeps the original functionality.
explorer appModule: support Windows 8.1 start screen search suggestions, by automatically announcing them as they are selected.
review.handleCaretMove: if the position given is part of an NVDAObject and the current review mode is 'object', allow setting the review cursor. Previously the position also had to be physically part of the same navigator object instance. Fixes #3320
Update changes file
api.getStatusBar: use objectFromPoint method on the desktop object rather than an IAccessible specific method. Fixes #3323
Revert "review.handleCaretMove: if the position given is part of an NVDAObject and the current review mode is 'object', allow setting the review cursor. Previously the position also had to be physically part of the same navigator object instance. Fixes #3320"

This reverts commit 0f154aa3e4a95c93a867e2f8d6e3e1b688c55e6e.
review.handleCaretMove: when comparing the caret's object with the navigator object, use != rather than is not. This ensures that the navigator object will be matched even if its moved away and back again (a different instance of the same control) either directly or indirectly. Re #3320
api.setNavigatorObject: if the review mode is document yet this object does not have a tree interceptor, force the mode to object. Fixes issue where follow caret would not work after moving focus (and therefore navigator object) away from a browse mode document. Re #3320
Merge branch 't3322'

Fixes #3322
Merge branch 't3323'

Fixes #3323
English symbols: Add left arrow (U+2190).

Fixes #3272.
What's New: Simplify entry about the new behaviour of single flick left/right in object mode.