CLN: de-duplicate Block.should_store and related
FooBlock.should_store is equivalent to `is_dtype_equal(self.dtype, other.dtype)` for almost all of our Block subclasses.  This makes that the implementation for the base class, so we define it in fewer places.  xref #32878 on remaining cases.
wow, cleans it up @jreback thoughts on using the new default should_store implementation (return is_dtype_equal(self.dtype, other.dtype)` for the remaining places that special case it (ExtensionBlock, ComplexBlock)?  For ExtensionBlock im pretty sure what we have now is just wrong, while for ComplexBlock it becomes equivalent to the new default if we were to add an itemsize check, which seems reasonable > @jreback thoughts on using the new default should_store implementation (return is_dtype_equal(self.dtype, other.dtype)` for the remaining places that special case it (ExtensionBlock, ComplexBlock)? For ExtensionBlock im pretty sure what we have now is just wrong, while for ComplexBlock it becomes equivalent to the new default if we were to add an itemsize check, which seems reasonable

yes i think you can OK next pass Thanks!