Use bitmask for MaskedArray mask
Not 100% working yet but wanted to open for discussion to see if it is worth trying to finish. This replaces our current bytemask with a custom bitmask, but does so in a separately library. The advantage of the separate library is that the CI setup can be customized a bit further, with ASAN/gtest tooling that would be hard or awkward to set up in pandas. The disadvantage is that the separate library has a sole purpose of fitting the needs of pandas, as a lot of the logic built for it tries to merge NumPy indexing with memory backed by nanoarrow; I don't see that being a wide use case

@jbrockmendel @jorisvandenbossche @phofl in case of interest
Git repo of dependency: https://github.com/WillAyd/pandas-bitmask 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. Not actively working on this - let's clear the queue With something like this could we pass the bitmask directly to pa.array for the `mask` keyword and have it be zero-copy? Yes this would be zero copy.

Unfortunately I haven't looked at this in quite some time, and don't have any firm plans to restart. But happy to offer guidance if someone else wants to try