Fixed IO exception on incremental compile when moving/deleting dependencies

Renaming/moving/etc a header would result in an IO exception (file not found) because the incremental compile classes attempt to hash the missing header.

This commit simply checks whether the file still exists first, and marks the dependency chain as modified if it doesn't.

Note: it might be nicer to catch the exception instead, I wasn't sure how it's done somewhere else in Gradle