TST: implement tm.to_array, box_with_timedelta, box4
Test helpers and fixtures broken off of #23734 and #23642 since these are blockers for boxing and (thankfully, finally) simplification in these files
Hello @jbrockmendel! Thanks for submitting the PR.

 - There are no PEP8 issues in the file [`pandas/tests/arithmetic/conftest.py`](https://github.com/jbrockmendel/pandas/blob/5ad7a1ce71881ac78538f4fb25f07e6cc6dfcfef/pandas/tests/arithmetic/conftest.py) !

 - There are no PEP8 issues in the file [`pandas/util/testing.py`](https://github.com/jbrockmendel/pandas/blob/5ad7a1ce71881ac78538f4fb25f07e6cc6dfcfef/pandas/util/testing.py) !

 @jbrockmendel Why not merging those two PRs you mention? We have already reviewed those, and I think they are more or less ready to be merged? # [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23748?src=pr&el=h1) Report
> Merging [#23748](https://codecov.io/gh/pandas-dev/pandas/pull/23748?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/db2066b7d31450aaa87f2efcef492162a3d08309?src=pr&el=desc) will **decrease** coverage by `0.02%`.
> The diff coverage is `22.22%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/23748/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/23748?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #23748      +/-   ##
==========================================
- Coverage   92.25%   92.23%   -0.03%     
==========================================
  Files         161      161              
  Lines       51390    51408      +18     
==========================================
+ Hits        47411    47415       +4     
- Misses       3979     3993      +14
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.62% <22.22%> (-0.03%)` | :arrow_down: |
| #single | `42.3% <11.11%> (-0.02%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/23748?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/util/testing.py](https://codecov.io/gh/pandas-dev/pandas/pull/23748/diff?src=pr&el=tree#diff-cGFuZGFzL3V0aWwvdGVzdGluZy5weQ==) | `85% <22.22%> (-1.08%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23748?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/23748?src=pr&el=footer). Last update [db2066b...b440900](https://codecov.io/gh/pandas-dev/pandas/pull/23748?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 > Why not merging those two PRs you mention? We have already reviewed those, and I think they are more or less ready to be merged?

If those are ready then that'd be great.  But my understanding is that there are not-easily-resolved questions, particularly the combinatorial explosion. first has not been reviewed > first has not been reviewed

Then let's review that? (I have already reviewed it)

> If those are ready then that'd be great. But my understanding is that there are not-easily-resolved questions, particularly the combinatorial explosion

As I mentioned on the PRs, they are ready for me. For the combinatorial issue, as long as the fixture is not used that much, we can deal with it later I think (as you mentioned there, you were not actually changing the number of options for the fixtures, just reorganizing them a bit) > > first has not been reviewed
>
> Then let's review that? (I have already reviewed it)

Now, for me it doesn't matter much, it's just two other PRs that @jbrockmendel needs to rebase/merge conflicts, and we that have to look again at the new diff. But if this is a more logical chunk of changes, that's fine. thanks @jbrockmendel 