Support merging DataFrames on a combo of columns and index levels (GH 14355)
This PR implements the changes proposed and discussed with @jorisvandenbossche @shoyer @TomAugspurger @jreback in #14355.

These changes allow the `on`, `left_on`, and `right_on` parameters of `DataFrame.merge` to accept a combination of column names and index level names. Any common index levels that are merged on are preserved as index levels in the resulting DataFrame, while all other index levels are removed.

In the case of a conflict, the column takes precedence and an ambiguity `FutureWarning` is raised.

- [x] closes #14355
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] documentation updated
- [x] whatsnew entry

**Note:** The new `df._get_column_or_level_values` method introduced in this PR is the same method introduced in #17361 to support sorting DataFrames on a combination of columns and index levels. I will keep this method in sync between the two PRs during the review process.
