ENH: Add in sort keyword to DatetimeIndex.union
- [x] closes #24994, xref #24471
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

As discussed in #25063 for ``Index.union``, I have made the default ``sort=None`` which should sort except in the three cases outlined in the doc-string. When passing ``sort=False`` it should never sort.

There is a fastpath in the ``DatetimeIndex.union`` that at present automatically sorts the two ``DatetimeIndexes`` if they are both monotonic by simply putting the two indexes in the correct order and then removing any overlaps. I have tried to adjust this fastpath to control this sorting behaviour.

I have tried to adjust the tests to properly test the sorting behaviour but I think the set operations tests need more work in general.

@jorisvandenbossche and @TomAugspurger it would be great if you could have a look at this too.