API: Handle pow & rpow special cases
Closes https://github.com/pandas-dev/pandas/issues/29997

@jorisvandenbossche do you have thoughts on where to document this behavior? I added a bit to `reference/arrays.rst` for now, but perhaps we'll eventually have a `user_guide/scalar_na.rst`?

> @jorisvandenbossche do you have thoughts on where to document this behavior? 

The NA scalar itself is currently documented in missing_data.rst. I would maybe add it there? Didn't see that section. Moved the note there.

We will still need something in reference so that :class:\`NA\` points somewhere. This is blocking https://github.com/pandas-dev/pandas/pull/29964, so it'd be nice to merge this in soon if possible. Addressed those, thanks for catching that. > General question - is this behavior defined or standardized somewhere?

It's part of some IEEE spec, but I haven't tracked down the source. Both Python and NumPy use this behavior for NaN.

For NA, I think it aligns with the principles behind Kleene logic. `True | NA` is True, since `True | anything` is True. Similarly, `NA ** 0` is 1, since `anything ** 0` is 1. thanks @TomAugspurger 