BUG: yield correct Series subclass in df.iterrows() (#13977)
- [x] closes #13977
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

pls read the instructions. we explicity call for tests.
 Ah, sorry. I made sure existing tests passed. Now I also added a new one.
 ## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/13978?src=pr) is 85.27% (diff: 100%)

> Merging [#13978](https://codecov.io/gh/pydata/pandas/pull/13978?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will decrease coverage by **<.01%**

``` diff
@@             master     #13978   diff @@
==========================================
  Files           139        139          
  Lines         50455      50447     -8   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
- Hits          43026      43018     -8   
  Misses         7429       7429          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [6645b2b...2820315](https://codecov.io/gh/pydata/pandas/compare/6645b2b11a82343e5f07b15a25a250f411067819...282031597e9ee8e57d880b31309db768e834dda7?src=pr)
 minor changes. ping when green.
 Revised. Hope it's ok.

I did notice some more `Series` and `DataFrame` calls where `self._constructor_sliced` or `self._constructor` might make sense (e.g. in `DataFrame.apply()` and submethods). What is the rationale for ever using `Series` instead of `self._constructor_sliced`?
 Thx for the update. Yes fixing relevant cases are appreciated (OK for separate PR).  The remaining normal constructor is mostly because of historical reason, and can be replaced to `constructor...`. 
 But what are relevant cases? If `DataFrame._constructor` must always be a subtype of `DataFrame` (and so on for `_constructor_sliced` and `_constructor_expanddim`), why not just do a mass renaming of `DataFrame` into `self._constructor` (etc.) in all methods?

Using Python's `inspect` module, one could even write a simple test ensuring no references to Series, DataFrame and Panel are hardcoded. :bulb: 
 It's simply because no one can take a time to do it (add tests). Note that sigatures must be changed sometimes, see #13208. 
 Thanks, will look into it.
 Adding just `__finalize__()` made [tests no longer pass](https://travis-ci.org/pydata/pandas/jobs/152388376#L1018).

I added a RFC commit with one proposed solution. It basically makes only DataFrame inherit DataFrame's _metadata properties, Series Series', and so on. I don't know whether this opposes any established behavior / documentation. Doesn't seem to. The tests will pass. :pray: 
 the inheriting of metadata should be on a like object. However this would belong in another PR.
 @kernc thx for theck. I've thought `finalize` has been generally called, sorry. 
 So this appears to be it for this PR. I'll be opening the other one shortly. Thanks.
 lgtm. ping on green.
 So this is green. I'm not sure why Xcode build is marked as failed.
 thanks!
