Numba portable caching logic

Addendum that may be of interest to those using Apache Spark. In my case, there was a further complication. After unzipping the egg and resetting the the file timestamps on the driver machine, I use standard python tarfile to pack the source tree into a tgz that’s added to the executors with spark.sparkContext.addFile().

This process also appears to not preserve the requisite python source code file timestamp precision to match the sub-second value contained in the numba cache index .nbi file. Repeating the process of saving the os.stat() values of each file in the tgz and updating them on the executor side seemed to resolve that issue.