In this post we create a *DiskCacher* class that can be used as a
*with* context manager, a function wrapper and as the pie-syntax
decorator. It modifies a given computation function, and tries to use
the cached data if possible, and only do the re-computation if the
cache is not found or the user forces an overwrite.