WiP for compiling of erlang/leex/yecc source files

This is (WiP)work in progress, but I would like to get a feedback and review, how one or other thing better to do. Because this is my second or third pull request, and first "not a simple bug fix" commit to a big open source project.

This change has:
* checking of erlang source file and dependencies(like .hrl files) for changes before compiling
* error and warning output messages by erlang compiling(if you have an error, you will see, which one in a readable way) with relative path to your project
* compiling of leex and yecc files too(with error and warning output too)

This comment has some code duplication, that I personaly don't like. And I want to remove it in a beautifull and understandable way(like in leex, yecc compilers, that do the same work with two changes). May be move code in Mix.Tasks.Compile with this arguments and simply call from leex and yecc compile tasks a generic task?

This commit doesn't have:
1) there are some code duplication, that I want to eliminate in a beautiful way, and may be I have rewritten some existing functionality?

I will be very happy for review and feedback!