Use PICKLE to preserve parses

Big change! All files are pickled so that the second run is much faster
if they’ve not been changed.  Also removed recurse(direction=‘upward’)
which didn’t return results as wanted.  When fixed will have a
different name than recurse()