Reorder tests in maybe_downcast_numeric
The comment `# if we have any nulls, then we are done` is not consistent with the test `if isna(arr).any()` because `arr` is constructed only from the first element (`r[0]`) not the full ravel'd list of values.  Moreover, calling `np.array()` on some random type can have surprising consequences.

So instead, do the early-out test as intended, just using `r[0]` without going through `np.array()`.  Then test other things about `r[0]`.  Only then should we test all the values (and if we have any nulls, then we are done).

See #55824

- [55824] closes #xxxx (Replace xxxx with the GitHub issue number)
- [ ] [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
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

While there is a conversation going on in #55824, these changes introduce no new functionality nor user-visible changes (other than tolerating Pint's behavior).  All these changes do is remove a dependency on the behavior of `np.array()` that can be accomplished as well by other means, and to make the implementation match the comments regarding the results of encountering NaN/NA values in the values to be possibly downcasted. Cool thanks for the PR. Can you add a test and a whatsnew note? Would be happy to, but...the test case would require loading Pint.  Last time I tried to do some test cases with alien packages I got back a big "No thanks!" from the pandas maintainers.  Also, another PR I submitted (enabling many complex test cases) rejected the WhatsNew changes I wrote because there were no user-visible changes.  Would you like to guide me further? So to wrap this up...I don't think it's easy to add a test case because that would involve installing Pint, which might not be very CI/CD-friendly.  If there's a good way to do that, please point me to a pattern I can follow.  It's easy for me to describe the change in CHANGES, but its not really user-visible.  But because there is an issue (though no test case), I could write it up anyway.  Thoughts? @WillAyd 

> Can you add a test and a whatsnew note?

With the current implementation in this PR, I wouldn't expect any behavior changes. You good here?

It does change for Pint because there `np.array([e])` will raise for certain Pint objects `e`, but I don't think we should be testing for this. Thanks @MichaelTiemannOSC 