compiler respects 'keep_going' flag

I am creating this PR as a base for further discussion.

I found that this change works fine for me, but I don't know if the fact that the worker pid is not removed has any bad effects. 
Do you mean that the pid should be part of the `{fail, {_, {source, Source}}=Error}` message?