Improve compilation times and memory consumption

This commit includes three changes:

1. Previously, the parallel compiler released at once all processes
   depending on a particular module. This commit ensures they are
   released according to the number of cores available. This ensures
   we have fewer modules being compiled at once

2. Garbage collect the current process every time we are waiting
   for another module to be compiled

3. Do not compile a module for files that simply define modules
No need to require for requires for all expansions
Rename DispatchTracker to LocalsTracker
Delay some error handling to translation
Expand comprehensions