Improve UndefinedFunctionError

* Detect undefined errors for compiling modules
* Log undefined errors in Task's like other OTP processes
* Normalize undefined errors from OTP processes

It would be nice to add tests for the last two bullet points but wanted to check this is an acceptable approach first.
By never leak I mean: they are never actually raised as exceptions.