Allow Pyrun to deal with sys.exit termination, and show errors properly

This patch improves Pyrun's error handling.

If a python script terminates with ``` sys.exit() ```, as many do, Pyrun presently reports a Run-time Error. This patch does the right thing: if the script terminates with ``` sys.exit(0) ```, this is treated as successful execution, and Pyrun returns normally. If the script terminates with ``` sys.exit( *some_other_value* ) ```, Pyrun reports an unsuccessful execution, and gives the exit code. This is what, eg, iPython also does. Any other runtime exception will be reported as at present.

Some small test cases:
 1)
```python
import sys
# terminate normally. Pyrun should not report any errors
sys.exit(0)
```

2)
 ```python
import sys
# terminate abnormally. Pyrun should not report abnormal termination, with code 1
sys.exit(1)
```

3)
 ```python
import sys
# Raise error. Pyrun should provide a traceback
1/0
```

Secondly, the patch fixes the showing of errors in the quickfix window. At present the code is broken. The efm is set *after* the lines are added by caddexpr, which means it is never used. Adding the lines to the quickfix window one by one means that multi-line messages are not parsed properly. I have also revised the efm itself, inspired by code from here: tlvince/vim-compiler-python  (originally written by Christoph Herzog).

Let me know if you have any questions

Lawrence