Use SHA1 for online cache keys

This makes online cache use SHA1 of the program source as key. Introduces `compute::detail::sha1()` function, which is moved from `compute::program` into its own header file.

This does not change the total test time on my Intel CPU. What really should be tested though is a sequence of kernels launched in a loop.