Initial version of the file

An implementation of the WebDriver's WebElement interface that is actually a wrapper around any possible
 * implementation of WebElement (e.g. HtmlUnitWebElement or RemoteWebElement) to avoid StaleElementReferenceException <br>
 * 
 * A StaleElementReferenceException occurs when we want to call a method of a WebElement that interacts with one DOM
 * element that has changed since the last time we have located
 * http://docs.seleniumhq.org/exceptions/stale_element_reference.jsp <br>
 * 
 * With this wrapper, before we actually call a method of Web Element, we wait until that calling does not trigger any
 * exception, then call that method again. Of course we assume that after this wait, then the DOM element does not
 * change anymore (between the time of locating and the time of interacting). There is no guarantee that this assumption
 * is true, but experience (from the Internet and from my own) shows that it accounts for >= 90% of the cases