Use a hashing function to construct output artfact file paths.

Modules like cpp need a way to construct unique locations
for output artifacts, but the current approach of duplicating
the path to the input file in the build directory can lead
to excessively long file paths that hit the limit on Windows.
So let's hash the path to the input file instead.

Change-Id: I47dcd242d0ee90c377f2a6df8e270bbefbaf082f
Reviewed-by: Thomas Epting <thomas.epting@stryker.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>