Unignored Selection

Issue: Selection APIs can expose ignored nodes.
AXSelections are built using AXPositions (which can be ignored). The
selection is then serialized into AXTreeData. This is read and exposed
directly without any additional logic regarding the ignored state of the
node, allowing for ignored nodes to be exposed to ATs.

Solution:
Add GetUnignoredSelection API to the AXTree to 'fix' positions to be
unignored before exposing them to ATs

Added new APIs
* AXTree::GetUnignoredSelection
* AXPosition::AsUnignoredTextPosition
* AXNode::GetDeepestFirstUnignoredChild
* AXNode::GetDeepestLastUnignoredChild
* AXNode::GetNextUnignoredSibling
* AXNode::GetPreviousUnignoredSibling
* AXNode::GetNextUnignoredInTreeOrder
* AXNode::GetPreviousUnignoredInTreeOrder


Added unit test in ax_tree_unittests
Added Dumptests

Bug: 982414, 985965
Change-Id: Ic889df8edd93140ae7e93dfff6a6def6993e79ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1691559
Commit-Queue: Jacques Newman <janewman@microsoft.com>
Reviewed-by: Nektarios Paisios <nektar@chromium.org>
Reviewed-by: Kurt Catti-Schmidt <kschmi@microsoft.com>
Reviewed-by: Kevin Babbitt <kbabbitt@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#686653}
59 files changed