Fix frame_or_series.asfreq() dropping rows on unordered indices
- [x] closes #39805
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

This prevents `frame_or_series.asfreq()` from dropping rows/items if the index is not sorted.

This seemed like a relatively easy fix, and it should probably be done sooner than later. However, there wasn't much discussion in the issue so I still have some questions:

1. How should we respond to unsorted indices? For now, I went ahead with option a.
  a. Silently "sort" the index before reindexing. Or we could
  b. Raise a warning before "sorting." Or
  c. Raise an error.
2. If it should be in the whatsnew, which version would it be added to?
3. I was thinking of converting the `asfreq` tests from class-based to functions. Can I do that in this PR or should I do that in another one?