rhg is supposed to be a transparent executable, using a subprocess defeats
that purpose. See inline comments for more details.
This also introduces the which crate to check if the fallback executable
actually exists to help debugging (plain execve doesn't give much
The error code 253 is used to signify that the fallback is not found, but may
mean in the future that it is otherwise invalid if we start being more