Add cache support to meta_kernel::compile()

This updates the meta_kernel::compile() method to support
caching of program objects. The programs are cached based
on a hash of their source code.