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.
Yeah, I would remove this then. Because we have three scenarios:

1. The module is defined and the function is not exported
2. The module is being defined (and the function is not available)
3. The module is not defined

I had in mind to show the extra information only for 2 and 3. For 1, there is no need to add extra info in parens (even if OTP does something like that, we can just disregard it).