By using gcc's dependency generation feature, we can execute ICG only when necessary, instead of all the time. Refs #309