resourceloader: Convert FileModule to use version hashing
Enabling the module content versionining is not feasible for FileModule as that
would involve Lessc and CSSJanus just to compute the version hash.
Instead, we can keep the existing logic that exists for the timestamp-based
versioning (which already has a comprehensive grip on tracking all involved
factors that cause a module to change) and convert it to use hashing instead.
This way the version hashes will be deterministic. Currently module versions
tend to be invalidated too often (and sometimes not often enough) due to Git and
other transport mechanisms not preserving file timestamps.
- https://phabricator.wikimedia.org/T98087#1412712 It'd take upto 10 seconds to run startup if FileModule enables build versioning.
- https://phabricator.wikimedia.org/T104950#1433142 Checking all files in resources/** took only ~30m longer in total with sha1_file compared to filemtime.