CLN: Consistent and Annotated Return Type of _iterate_slices
General pre-cursor to getting block management out of groupby. This is also a pre-cursor to fixing #21668 but needs to be coupled with a few more changes as a follow up

On master calls to _iterate_slices look up by label, potentially yielding a DataFrame if there were duplicated columns. This takes the surprise out of that and simply returns a Tuple of label / series for each item along the axis

@jbrockmendel 
Might want to look at DataFrameGroupBy._transform_item_by_item.  If I'm reading it correctly, that will screw up if we have non-unique columns.  (I think that's relevant to what you're doing here) > can u perf check for groupby

Ran entire GroupBy benchmark and showed no changes

> Might want to look at DataFrameGroupBy._transform_item_by_item

Yea looks it could be consolidated to use this, though leaving to a follow up

Also w.r.t. your comment on axis=1 case seems logical but might be some complications around managing selection state with that and how things are constructed. May take a look down the road, though if you see a way to make it work in the meantime makes sense to me
 thanks