Adding a cache microbenchmark.

Pulling in the existing Cache module as a submodule.
It was changed to make it a proper module and also to remove
its main function. The Cache Haskell implementation is not used yet,
but the Java cache microbenchmark is implemeneted and used in the
testing.