Excel column and row header detection: no longer use application.intersect as this does not work in Excel protected view. Instead do the region intersection manually.
Specifically:
* tableUtils.HeaderCellTracker.iterPossibleHeaderCellInfosFor method: take min and max column and row number arguments which can be used to limit the search to a particular region (e.g. the current region of the cell who's row and column number are being used for the search).
* tableUtils.HeaderCellTracker.iterPossibleHeaderCellInfosFor method: walk by row when looking for column headers and walk by column when looking for row headers. Previously this was the other way around. But it makes more sence to find the closest row for column headers first, and the closest column for row headers first.
* Excel: change the re_rc regular expression to support ranges, but only work on absolute coordinates. Also rename it to re_absRC.
* ExcelCell NVDAObjectt: Use the new re_absRC and fetch addresses absolutely.
* ExcelWorkSheet NVDAObject's fetchAssociatedHeaderCellText method: Don't use application.intersect, rather fetch the min and max row and column numbers from the cell's current region via the region's RC address and pass these to iterPossibleheaderCellInfosFor so it can limit to the region itself.
* ExcelWorkSheet NVDAObject's fetchAssociatedHeaderCellText: Only return if there has been text collected. I.e. if not then further possible header cells will be tried if they are available.