ENH7792 add optional level argument to set_names(), set_levels() and set...

Closes #7792

New `level` argument:

    set_names(self, names, level=None, inplace=False)
    set_levels(self, levels, level=None, inplace=False, verify_integrity=True)
    set_labels(self, labels, level=None, inplace=False, verify_integrity=True)

e.g.
    set_names('foo',level=1)
    set_names(['foo','bar'],level=[1,2])
    set_levels(['a','b','c'],level=1)
    set_levels([['a','b','c'],[1,2,3]],level=[1,2])
Sorry it is my first PR. Are you expecting a reference to GH7792 as a comment in the code or in the commit message? 

If you are specifically talking about the apparent removal of the test `test_set_levels_and_set_labels()`, the reason it that the test became too long so I split it into two: `test_set_levels()` and `test_set_labels()`