BUG: fix shift indexer to work on correct axis length
TST: test that DataFrame.shift(axis='columns') works
ENH: Generalize shift to work with any N-dimensional block instead 1,2