Set index with prepend
Associated issue: https://github.com/pandas-dev/pandas/issues/26742

This PR adds the ability to _prepend_ indices to existing ones using `.set_index()`, in the same vein as the `append` argument.

This avoid having to do the awkward alternatives:
- `.reset_index().set_index(...)`
- `.set_index(append=True).swaplevel(...)` or `.set_index(append=True).reorder_levels(...)`

`prepend` is mutually exclusive with `append`. The code will test for this and raise ValueError if not.

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

Hello @nicodv! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:





There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2019-06-07 23:58:12 UTC Thanks for the PR. Is there an open issue for this? Not sure I agree with adding `prepend` as a keyword but curious if you came across discussion of this already

cc @toobaz  @WillAyd , no I didn't find an open issue. This was borne out of my team's frustrations with there not being a `prepend` option, and we're not the only one, given this popular StackOverflow question: https://stackoverflow.com/questions/14744068/prepend-a-level-to-a-pandas-multiindex.

I agree that changing the API to `.set_index` with two mutually exclusive booleans may not be considered ideal, so I'm open to suggestions. Totally fair. Do you mind opening an issue for this? We typically have API discussions in those and use them for tracking purposes, so if you move conversation there first I think would be helpful and we can come back here as needed FWIW I think the request is reasonable, and shouldn’t need much design discussion. 

> On Jun 8, 2019, at 15:00, William Ayd <notifications@github.com> wrote:
> 
> Totally fair. Do you mind opening an issue for this first? We typically have API discussions in those first and use them for tracking purposes, so if you move conversation there first I think would be helpful and we can come back here as needed
> 
> —
> You are receiving this because you are subscribed to this thread.
> Reply to this email directly, view it on GitHub, or mute the thread.
 I don't think having `append` and `prepend` makes for a good API, especially since it now doesn't cover the use case where a user may want to insert into the middle of a multi index. Initial thought is providing `level` as an int along with append may make the most sense, though still not ideal IMO OK, I've opened an issue for discussion: https://github.com/pandas-dev/pandas/issues/26742 Let's close this for now as we hash out discussion in the issue. Can always reopen later!