BUG: .iloc and .loc behavior not consistent on empty dataframe
Fixes #9964 .

Notice that `assert_frame_equal` now fails for empty dataframes with different dtypes (as, I think, it should).  However, this means some tests need to be patched now.
