WaitForExist Fork

Interactions and clicks on the tablet now wait for elements to exist before attempting to interact with them. Previously we assumed that if the element is selectable, it would be available for interaction, which has caused failures in the tests. 

We've replaced UiObject.exist calls with UiObject.waitForExist(), which allowed us to return Result.FAILURE when UiObjects are not available.

One thing to note, there are still retry loops in perform_assertion. For now, we will not remove it as it provides some reliability. Until we better understand why the retry loops are still being triggered, we will leave them in. The double retry expands the maximum timeout to twice what it is configured for, which should not be problematic as the waits do not block for the entire timeout.