## 🚀 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()`. 

protected String id;
  protected RemoteWebDriver parent;
  protected FileDetector fileDetector;
  protected void setFoundBy(SearchContext foundFrom, String locator, String term) {
    this.foundBy = String.format("[%s] -> %s: %s", foundFrom, locator, term);
  }
  public void setParent(RemoteWebDriver parent) {
    this.parent = parent;
  }
  public String getId() {
    return id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public void setFileDetector(FileDetector detector) {
    fileDetector = detector;
  }
  @Override
  public void click() {
    execute(DriverCommand.CLICK_ELEMENT(id));
  }
  @Override
  public void submit() {
    execute(DriverCommand.SUBMIT_ELEMENT(id));
  }
  @Override
  public void sendKeys(CharSequence... keysToSend) {
    if (keysToSend == null || keysToSend.length == 0) {
      throw new IllegalArgumentException("Keys to send should be a not null CharSequence");