DF.__setitem__ creates extension column when given extension scalar
This PR is in response to [Issue 34832]( https://github.com/pandas-dev/pandas/issues/34832).
These changes follow the suggestions from reviewers on the PR to fix an issue where `df['a']=pd.Period('2020-01')` would create an object column instead of a `period[M]` column.

One potential issue that I see with these changes is that this code requires the `shape` parameter passed into `cast_scalar_to_array` to be an int, even though the functions docstring claims that it accepts a tuple.

I'm happy to work on resolving that issue, but first wanted to clarify that it is necessary. Based on my perspective, there would be no reason to call this function to create a multi-dimensional array, but I surely don't understand the full interconnectivity of this package.

- [x] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Hello @justinessert! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:









There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2020-07-10 22:53:42 UTC Thanks @TomAugspurger for all your time in reviewing this PR and the original issue. Everything looks to be passing and I think I have addressed all your comments, please lmk if you would like to see any other changes! @TomAugspurger @jorisvandenbossche @jreback Are there any outstanding requests that you have on this PR? i will have a look soon as havent  reviewed  @TomAugspurger @jreback I refactored this PR per your suggestions. In affect I am no longer changing the functionality of `cast_scalar_to_array` and everything is a lot more explicit. Please let me know what you think now. Can someone help me understand what this recent test failure is? I could be wrong, but it doesn't seem to be a unit test or formatting error I restarted the job that crashed. @jreback all good? ping on green. thanks @justinessert  Thanks a lot @justinessert ! (and sorry for the difficult back and forth discussion) No problem!

@jorisvandenbossche @jreback @TomAugspurger Thanks for all your help in getting this PR through!