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.

What other changes is this making? (there are a lot of edge cases to empty frames!)

For instance the tests in test_groupby looked correct before...
 The problem is that due to the fact that `.iloc` looses datatypes on an empty dataframe, dtypes are not checked on empty dataframes.  E.g., right now on master:

```
In [1]: import pandas as pd

In [2]: df1=pd.DataFrame(columns=["col1","col2"])

In [3]: df1["col1"] = df1["col1"].astype('int64')

In [4]: df2=pd.DataFrame(columns=["col1","col2"])

In [5]: print df1.dtypes
col1     int64
col2    object
dtype: object

In [6]: print df2.dtypes
col1    object
col2    object
dtype: object

In [7]: pd.util.testing.assert_frame_equal(df1, df2, check_dtype=True)

In [8]: 
```

Where on PR this assert fails. So a couple of tests that compare empty dataframes with different dtypes need to be patched.
 Please test the corrected behaviour of assert_frame_equal in test_testing.

IIUC This means previously fleshed out behaviour for empty edge case dtypes has been broken for some time?
 OK, added test to `test_testing`.

Yes, I think assert_frame_equal was broken for empty dataframes.  It would still compare number/names of columns, but not their dtypes.
 @jreback Made changes, except for moving test out of test_testing --- are you sure about that?
Also, came across another weird bug --- see comments above.
 @jreback OK, fixed `test_frame.py`
 @artemyk ok looks good. ping on green (if you want to rebase on master, prob a release note conflict, ok, otherwise will do it on merging).
 @jreback Ready to go.
 @artemyk thanks!

proof that sometimes trivial looking things (in indexing), actually can have lots of cases / need lots of testing
