Split out the MSCOM pieces of BrowserAccessibilityWin into a seperate class.

This CL splits out all of the MSCOM stuff in BrowserAccessibilityWin into to a
new class BrowserAccessibilityComWin. This allows us to more easily to reuse
the AXPlatformNodeWin.

The way this works is that BrowserAccessibilityWin creates and owns a COM
object named |browser_accessibility_com_|.  BrowserAccessibilityWin continues
to implement BrowserAccessibility but all interactions with Windows is done
through the BrowserAccessibilityComWin object.

BrowserAccessibilityComWin is created with both a delegate for
AXPlatformNodeWin usage as well as a backpointer to BrowserAccessibilityWin so
it can call back into BrowserAccessibility. Ownership is such that:

BrowserAccessibilityWin owns one reference on BrowserAccessibilityComWin.  When
BrowserAccessibilityWin goes away, it nulls out the backpointer and delegate
pointer rendering the BrowserAccessibilityComWin potentially still alive but
basically useless.

Note that this split is similar to how MacOS is implemented.

BUG=703369

Review-Url: https://codereview.chromium.org/2864953002
Cr-Commit-Position: refs/heads/master@{#470493}
15 files changed