Make shared libs for CUDA modules depend on host and device checksums

When building a CudaModule, the shared lib is not re-linked if the
cache is hit for both the host and the device module. However, this
does not mean that the host module was also linked against that very
device module we found in cache, which is what we want.

To make sure we don't accidentially reuturn a shared lib with wrong
linkage when we hit the cache twice, the name of the shared lib
contains the hex checksums for both the host and device code.

This allows shared libraries for the same host module linked against
different device modules to co-exist in cache without the need to
re-compile the object files.