Improve stale element handling

Element#assert_not_stale as currently implemented is useful for more static interactions with the page (refreshes and the like)
With more dynamic updates to the DOM, we sometimes have elements going stale between the #assert_not_stale call and the wire call that uses the element object.

These updates: 
1) Reduce the number of places where wire calls are made directly and push the implementation to the Element superclass where possible. 
2) Re-look up the element if it is stale, but still exists. If it passes the #assert_not_stale, then becomes stale, there is no reason to not retry instead of letting the test fail.
I agree as well. We actually did already have this discussion, and I agreed with you that time as well, this is just a logistical challenge for me. I'm juggling 4 watir-webdriver forks with 2 github accounts across 3 machines, and I'm trying to test various combinations of my outstanding pull requests on different test suites. Which is to say... I'm not trying to sneak something in or be passive aggressive about this, I'm just trying to keep everything straight, because I'll want this code in the convio fork if/when this PR gets approved. I'll remove it on the next update.