C object files are now outputted properly
Split the dependency file

Each .ml file will have a dependency file instead of having a giant
one. Thus, we only generate dependencies for files that have changed.

The current pattern is that for every .ml file, like foo.ml, its
associated dependency file will be .foo.d. This may change or become
configurable later.
Fixed some spacing