ENH: Add duplicated/drop_duplicates to Index

Closes #4060.

```
idx = pd.Index([1, 2, 3, 4, 1, 2])
idx.duplicated()
# Index([False, False, False, False, True, True], dtype='bool')
idx.drop_duplicates()
# Int64Index([1, 2, 3, 4], dtype='int64')

idx.duplicated(take_last=True)
# Index([True, True, False, False, False, False], dtype='bool')
idx.drop_duplicates(take_last=True)
# Int64Index([3, 4, 1, 2], dtype='int64')
```
ahh yes, that would be better (though maybe add as a NotIMplemented to OpsMixIn just as a place holder for the abstract methdos)