acquire GIL during work unit conversion (#11186)
acquire GIL during work unit conversion (#11186)

### Problem

I noticed while implementing metrics that the conversion of a `Workunit` to Python takes the GIL independently for each value in the work unit because the `externs::store_*` helpers each acquire the GIL. Going up the call stack to `poll_session_workunits`, the GIL is released during the work unit conversion to Python values because of a call to `py.allow_threads` and not reacquired until execution is inside each `externs::store_*` function.

### Solution

Acquire the GIL within `workunits_to_py_tuple_value` so that all work units being converted in that call do not need to re-acquire the GIL. The `Python::acquire_gil()` API supports recursive acquisition of the GIL.

This is a micro-optimization, but seems simple enough to make.

### Result

Existing tests pass.
benjyw/pants,benjyw/pants,pantsbuild/pants,jsirois/pants,pantsbuild/pants,pantsbuild/pants,benjyw/pants,jsirois/pants,benjyw/pants,benjyw/pants,pantsbuild/pants,benjyw/pants,benjyw/pants,jsirois/pants,pantsbuild/pants,pantsbuild/pants,pantsbuild/pants