Don't recreate the ebin/*.app file if modules are unchanged

This is my second take at tackling the problem of unnecessary recreation of ebin/*.app file.
This implementation compares the list of modules with the one found in the current *.app file (if one exists), and if they don't match, generates the file.

Additionally it provides a mechanism for excluding some files from the build using C_SRC_EXCLUDE variable.

Finally, mkdir is called only when referenced directories are missing.