PERF: Avoid copy in DataFrame._reduce corner cases
This implements BlockManager._get_data_subset (which ArrayManager already has) to avoid making a copy in a `DataFrame.__getitem__` usage inside DataFrame._reduce.

This path is deprecated so this snippet will be removed in 2.0.


can you point to the benchmarks which change ?  Not aimed at any benchmarks in particular, i just have a note to self to avoid a copy here.