Return the right class, when subclassing a DataFrame with multi-level index
Subclassing pandas.DataFrame had some issues, when a multi-level index was used. This PR should fix that.

needs tests
 What to test for, @jreback ? I can test, if subclassing works correctly, but there are other open issues on this topic and I understand it's work in progress.
 well you need to assert that the correct class is returned

you create a dummy class do the operation and assert

not sure what you mean by the rest of your statement - exactly what doesn't work?
 You're right. That's something that can be tested. I'll just add the use cases that were broken before. Thanks for the pointer.
 whats new is now available for 0.16.1 https://github.com/pydata/pandas/commit/5ebf521eac528f5a4b772e4677f70b689b8b1826
 Great. Now it pulled in some other commits as well. Is that an issue?
 @manuelRiel If you do:

```
git fetch upstream
git rebase upstream/master
```

this should solve the extra commits
 Yes. That did the trick. Usually I do a feature branch, but I forgot this time. So the PR is ok now?
 @manuelRiel you need to `git push gitusername branchname -f`
in order to reflect these changes here.
 Cleaned out the extra commits. We're good now?
 pls add a release note in v0.16.1 (you can put in API changes).

@sinhrks can you take a look
 Thanks for the heads up, guys. I have added the reference to the PR, as well as the release note. Let me know, if there is anything else to change.
 pls rebase / squash, see [here for help](http://pandas-docs.github.io/pandas-docs-travis/contributing.html)
 Done @jreback
 @manuelRiel Thanks for the fix. Can you prepare test cases when the column is `MultiIndex`, because you're fixing `_getitem_multilevel`?  Pls check followings can return correct classes.

```
# comments are results of current master
mcol = pd.MultiIndex.from_tuples([('A', 'A'), ('A', 'B')])
df = CustomDataFrame([[0, 1], [2, 3]], columns=mcol)

type(df['A'])
# <class 'pandas.core.frame.DataFrame'>

mcol = pd.MultiIndex.from_tuples([('A', ''), ('B', '')])
df = CustomDataFrame([[0, 1], [2, 3]], columns=mcol)
type(df['A'])
# <class 'pandas.core.series.Series'>
```
 Sure. I'll look into that. We're using multi-levels extensively and didn't run into issues. But it's possible I overrode this function in the subclass. I'll make sure it works properly.
 Added the tests, @sinhrks . Returns custom class as expected.
 @manuelRiel this looks fine. Can you rebase and ping on green.
 Rebased and passing, @jreback 
 @manuelRiel thanks!
