Refactor recurisve module compile with promises

Refactored recursiveModuleCompile to return a promise, with some other simplifications targeting ease of understanding.

Refactored other code that uses recursiveModuleCompile to use a more natural promise style.
maybe `.then(function(tree) {compiler.writeTreeToFile(tree, resolvedOutputFile);}).then(revertCwd, revertCwd);`?