make more comparisons work across dataframes of different manager types
- [X] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [X] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

This PR fixes issues with binary operators and `.equals` across two DataFrames with different managers (one with BlockManager, one with ArrayManager). 

1. When comparing using ` df (BlockManager) == df (ArrayManager)`, there would be a cryptic `AttributeError: 'ArrayManager' object has no attribute '_slice_take_blocks_ax0'`. Instead, we raise a ValueError exception that this comparison cannot be done.


2. Comparing using `df (ArrayManager) == df (BlockManager)` and `df (ArrayManager).equals( df(BlockManager) )` now works. It did not work before because BlockManager.arrays returns a nested list, whereas ArrayManager.arrays returns a flat list. Now, we flatten BlockManager.arrays which makes the comparisons work.


## Summary

Before, ArrayManager <-> BlockManager comparisons and operations did not work at all and would give cryptic error messages. 

Now, ArrayManager -> BlockManager operations work. BlockManager -> ArrayManager operations don't work but give a helpful `ValueError`.
thanks for the tip! With `mgr_to_mgr` both comparisons work now.  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. Thanks for the pull request, but it appears to have gone stale. If interested in continuing, please merge in the main branch, address any review comments and/or failing tests, and we can reopen.