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.
message is calculated only when we need to print it. the recommended is to use exception, but we don't want to make normalization expensive.