BUG: Copy attrs on pd.merge()
This uses the same logic as `pd.concat()`: Copy `attrs` only if all input `attrs` are identical.

I've refactored the handling in __finalize__ from special-casing based on th the method name (previously only "concat") to handling "other" parameters that have an `input_objs` attribute. This is a more scalable architecture compared to hard-coding method names in __finalize__.

Tests added for `concat()` and `merge()`.

Closes #60351.

This pull request is stale because it has been open for thirty days with no activity. Please [update](https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#updating-your-pull-request) and respond to this comment if you're still interested in working on this. > This pull request is stale because it has been open for thirty days with no activity. Please [update](https://pandas.pydata.org/pandas-docs/stable/development/contributing.html#updating-your-pull-request) and respond to this comment if you're still interested in working on this.

I'm still interested in this, and IMHO it's ready for review. Sorry @timhoffm nobody reviewed this. We don't have many people reviewing nowadays, and some PRs are never reviewed. Do you mind updating your branch and adding a release note? I'll try to have a look at this soon.

@rhshadrach I think you checked this already when discussed in the issue. If you have time to have a look at the implementation, that would be great. Thanks for sticking with this @timhoffm 