Check if there are rules to build all targets
Clean up in main in case of an error
Use return codes instead of fatal_error in parse.c
Use return codes in job_runner.c
Use return codes in files.c
Use return codes in macros.c
Use return codes in graph.c
Stop using fatal_error in xmalloc.c
Remove error.h and error.c
Limit macro recursion depth
Add informational messages