Allows for merging of SparseDataFrames, and fixes __array__ interface
- [x] closes #13665 and #14167  and #19506
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

This is still an in progress thing... since this is pretty complected code that I'm trying to unravel.
