Pass npm exit code through to the calling shell

Hello!

I started using your utility for my Jenkins builds and noticed a problem with it. It doesn't pass the exit code of the npm command through to the calling shell. So for example a `npm-install-retry -- thispackagedoesnotexist` still returns exit code 0, which doesn't stop the Jenkins build (even though the npm install failed).
For this reason I created this PR, which tbh introduces a lot of changes, though I tried to stay as close to the original code as possible. If it changes too much, it may still be an inspiation for your own implemenation :smile:

Regards,
Benni