replace open() by nqp:: ops

This is needed because open() thinks the CC we invoke sits in our CWD.
Since this is not the case and it is hard to figure out where a binary
is (especially on windows), we need re-implement 95% of open's magic.