(For Micah) Cache the dependency graph more

@mwylde 

I narrowed the performance issue we have down to the the transitive closure operation on the dependency graph. Whenever we update a HAML file, the dependency graph rebuilds, even if it was only content that changed, not directives. This invalidates the graph only when we notice a change in directives.
Given that we know exactly which files have changed, do we need to compute the md5 over the whole manifest?