operator equal on Index should behavior similarly to Series
currently on `master` (after the PR https://github.com/pydata/pandas/issues/9785), we have the following behavior when comparing two Indexes with `==`:

```
In [3]: index_a = Index(['a', 'b', 'c'])
In [4]: index_b = Index(['a', 'b', 'c', 'd'])
In [5]: index_a == index_b
Out[5]: False
```

Firstly, `==` should be element-wise comparison, so it really shouldn't return just a scalar `bool`. That should be the case for `Index.equals()` instead.

Secondly it is also not consistent with the behavior with `Series`

```
In [6]: series_a = Series(['a', 'b', 'c'])
In [7]: series_b = Series(['a', 'b', 'c', 'd'])
In [8]: series_a == series_b
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-8-97f84083a0cd> in <module>()
----> 1 series_a == series_b

/Users/mortada_mehyar/code/github/pandas/pandas/core/ops.py in wrapper(self, other)
    576             name = _maybe_match_name(self, other)
    577             if len(self) != len(other):
--> 578                 raise ValueError('Series lengths must match to compare')
    579             return self._constructor(na_op(self.values, other.values),
    580                                      index=self.index, name=name)

ValueError: Series lengths must match to compare
```

This PR makes the behavior consistent by checking the Index lengths. Also fixes a few unit tests which seem to incorrectly assume `.equal()` should return the same output as `==` 
