fine-tune the logic for reporting context on tracebacks
fine-tune the logic for reporting context on tracebacks

Do not report a MesonBugException if the command is `runpython`, because
that is 100% other people's code, not ours. It's only used as an
alternative to sys.executable for reporting a path to python, in the
event of a Windows MSI install.

While we are at it, refactor the logic for PermissionError to be a bit
more unified (and sadly use isinstance instead of except, but it is what
it is).

mesonbuild/meson,pexip/meson,mesonbuild/meson,pexip/meson,mesonbuild/meson,mesonbuild/meson,mesonbuild/meson,mesonbuild/meson,pexip/meson,mesonbuild/meson,pexip/meson,pexip/meson,mesonbuild/meson,mesonbuild/meson,pexip/meson,pexip/meson,pexip/meson,pexip/meson,pexip/meson,mesonbuild/meson