## 🚀 Feature Proposal

I suggest
1. either to add method `getId()` to interface `WebElement`, or
2. to create interface like `HasId` or `HasIdentity` and make `RemoteWebElement` implement it. 

## Motivation

People often cast `WebElement` to `RemoteWebElement` just to call method `getId()`. 
De-facto all implementations of `WebElement` have method `getId()`. 
For me, it's a problem because `RemoteWebElement` is a class, not interface, and therefore I cannot create a proxy object for it in Selenide. I need some interface with method `getId()`. 

* @deprecated Rely on using {@link By.Remotable} instead
   */
  @Deprecated
  protected List<WebElement> findElements(String using, String value) {
    throw new UnsupportedOperationException("`findElement` has been replaced by usages of " + By.Remotable.class);
  }
  protected Response execute(CommandPayload payload) {
    try {
      return parent.execute(payload);
    } catch (WebDriverException ex) {
      ex.addInfo("Element", this.toString());
      throw ex;
    }
  }
  protected Response execute(String command, Map<String, ?> parameters) {
    try {
      return parent.execute(command, parameters);
    } catch (WebDriverException ex) {
      ex.addInfo("Element", this.toString());
      throw ex;
    }
  }
  @Override
  public boolean equals(Object obj) {
    if (!(obj instanceof WebElement)) {
      return false;
    }
    WebElement other = (WebElement) obj;
    while (other instanceof WrapsElement) {
      other = ((WrapsElement) other).getWrappedElement();