CLN: consolidate Index.astype
we have some code repitiion in ``*Index.astype``, IOW each subclass implements a lot of the same boilerplate / logic. I think we could make this a bit simpler (maybe have a class attribute which ``Index.astype`` can check for valid types, and override this in sub-classes). just a thought.

xref #18677 