CLN: remove compat.add_metaclass
- [x] xref #25725 

This removes the ``compat.add_metaclass`` function from the code base and replaces it with a metaclass parameter in class instation.

I don't understand why ``ExcelWriter`` needs to use a abc.ABCMeta metaclass, as the class is being used directly in the code base and I thought abstract classes couldn't be instantiated, but needed subclassing. I've kept abc.ABCMeta metaclass in ``ExcelWriter``, but would appreciate advice.