dispatch scalar DataFrame ops to Series
Many issues closed; will track them down and update.  Will also need whatsnew.

closes #18874
closes #20088
closes #15697
closes #13128
closes #8554
closes #8932
closes #21610 
closes #22005 
closes #22047
closes #22242

This will be less verbose after #22068 implements `ops.dispatch_to_series`.

This still only dispatches a subset of ops.  #22019 dispatches another (disjoint) subset.  After that is another easy-ish case where alignment is known.  Saved for last are cases with ambiguous alignment that is currently done in an ad-hoc best-guess way.