BUG: set_index() and reset_index() not preserving object dtypes 
* changes to `set_index()` and `ensure_index_from_sequences()` to pass current dtype of key through call stack onto Index constructor, rather than letting Index constructor infer the dtype. For now I just aimed to patch a single key param from `set_index()`, as that is the lowest hanging fruit for this issue I think.

* removed `maybe_convert_objects()` call from `_maybe_casted_values()`. This will preserve an `object` dtype on a `set_index().reset_index()` round-trip. I came to the exact same conclusion as the user in [this PR comment](https://github.com/pandas-dev/pandas/pull/27370#issuecomment-511051996), for context. This makes sense conceptually, if your index was an object dtype, it should be an object dtype as a column. Of course, this is somewhat subjective so let me know your opinions, but this is what I interpreted from the discussion on the git issue.

* both of these changes break quite a few existing tests, most of which are testing specifically for the exact opposite conditions that this PR is intended to patch **e.g.** tests that look for object dtypes being coerced to more-specific types. What's the process for handling failed tests for a change like this? Would you attempt to refactor all, or delete the ones where the logic is no longer something to test for? I also ran `pytest pandas` on a fresh pull of master and had 13 fails, with 108 failures on my branch specifically, so I am also curious what to do about those previously-failing tests, or what is acceptable for a merge.

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