Fix opencl JITModule caching for direct loops with repeated args

If an Arg is repeated, we generate different code compared to if there
were the same "type" of Dat, so keep track of that in the cache key
too.
Temporary fix for Kernel caching

If we get an AST, generate code before computing a hash.