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.
4. The module is defined and function is exported. In this case we can not know whether it was the module that was not loaded or the function was not exported (or someone trying to shoot themselves in the foot).