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])
is their a test for the reverse 
eg len(levels) == 2 but level =1 ?