utils/run: with_env_recursive(cmd, envvars)
utils/run: with_env_recursive(cmd, envvars)

Allow the environment of a plumbum command to be updated recursively.
By default, plumbum allows users to change the environment of a
BoundCommand object by wrapping it with a BoundEnvCommand that takes
care of wrapping the encapsulated command in the given environment.

In our case, however, we want to be able to override the environment of
the BoundCommand because we need to overwrite PATH and LD_LIBRARY_PATH
for the command inside the uchroot environment.
The easiest solution (for us) is to provide a free 'with_env_recursive'
function that takes care of the update. For a more robust approach we
would need to abstract uchroot away by pushing it into a new
Machine-like data-structure (like 'local').


Former-commit-id: 1e2524ed9b03f5bc232b58451717ef8ad170bd1a
Former-commit-id: febdc231cc59cb24672ba0b8f589ba2a1d0ad7c9 [formerly 1667b7575c664b9fcb640021342ad5d4945f5337] [formerly 629bf218c9173d43269a38e8d8c50d64c76eb804 [formerly 918032bc9cde7198479f90106d9de8569de92fac]]
Former-commit-id: b70e7f20f1fedf416a21e52b4741065374b81a98 [formerly bbb236458896ac0acaea3f031c53e1832118bb54]
Former-commit-id: bfefd3e71032510d3af792cf54475edb78fe8598
PolyJIT/benchbuild,PolyJIT/benchbuild,PolyJIT/benchbuild,PolyJIT/benchbuild