NVDAObjects/UIA: add UIAAutomationId getter (#11447)
* NVDAObjects.UIA.UIA: introduce UIAAutomationId getter. Re #11445.
Sometimes a COM error is raised when trying to obtain cached automation Id, particularly if a UIA element isn't ready yet (for example, in modern keyboard). To avoid COM error, introduce a dedicated UIA Automation Id getter that either returns the Automation Id if found or an empty string. The overall structure is based on UIAFullDescription and UIAHelpText getters.
* UIA find overlay classes: use a local UIA Automation Id variable to hold current Id information. Re #11445.
When going through overlay classes, instead of fetching cached Automation Id from the underlying UIA element, use the current Automation Id as returned by what U*IA actually says (based on new Automation Id getter). This reduces attribute access and removes the need for a try/except block for some cases as either the actual Automation Id or an empty string will be recorded. However, for backward compatibility, some notable try/except blocks such as search field checks will remain.
* UIA find overlay classes: lint on changed lines. Re #11445.
* UIA dev info: explain that Automation Id will rely on cached value when asking for dev info. Re #11445.