Make usage a regular function
Refactor to avoid log.Fatal, part 1: getCacheDir
Refactor to avoid log.Fatal, part 2: maybeMkdirs
Refactor to avoid log.Fatal, part 3: helper main function to use defer in

Fatal calls os.Exit which doesn't run defers, so temp files were not
cleaned up.
Show just basename in usage message