Subclassed reshape clean
 - [x] closes #15563 
 - [x] tests added / passed
 - [x] passes ``git diff upstream/master | flake8 --diff``
 - [x] whatsnew entry

This PR enables reshape operations on subclassed `DataFrame` and `Series` objects to preserve subclass families through the use of `_constructor*` properties.

See discussion on PR #15564. Thanks for the help @jreback.

This PR has a cleaner implementation of subclassed unstack operations by modifying the `_Unstacker` initializer to allow an optional `constructor` argument.

Additionally, this PR implements tests for a wider set of reshape operations. It now covers:

* `DataFrame.stack()`, `DataFrame.unstack()`, `DataFrame.pivot()`, and `series.unstack()` for containers with `Index` and `MultiIndex` indices and/or columns
* `pd.melt()`
* `pd.wide_to_long()`

Finally, the pandas internals docs have been edited for clarity and additional examples have been added to showcase subclassed reshape and math operations.