BUG: Index.union() drops Index component for duplicate Index elements not sorted
- [x] I have checked that this issue has not already been reported.

- [x] I have confirmed this bug exists on the latest version of pandas.

- [x] (optional) I have confirmed this bug exists on the master branch of pandas.

---

**Note**: Please read [this guide](https://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) detailing how to provide the necessary information for us to reproduce your bug.

#### Code Sample, a copy-pastable example

```python
import pandas as pd

idx1 = pd.Index([0, 0, 1])
idx2 = pd.Index([0, 1])

print(idx1.union(idx2))
# Int64Index([0, 0, 1], dtype='int64')
print(idx2.union(idx1))
# Int64Index([0, 0, 1], dtype='int64')

idx1 = pd.Index([1, 0, 0])

print(idx1.union(idx2))
# Int64Index([0, 0, 1], dtype='int64')
print(idx2.union(idx1))
# Int64Index([0, 1], dtype='int64')

```

#### Problem description

In the fourth call ``idx2.union(idx1)`` one of the ``0`` is dropped. Meaning union() depends on the call order and on the index order, which seems buggy.

#### Expected Output

``Int64Index([0, 0, 1], dtype='int64')`` for every print Statement

#### Output of ``pd.show_versions()``

<details>

master

</details>
