Add caching

Paired with @barneydesmond 

Addresses issue #28 

Modified caching of sourcedicts to write out partial caches after processing each contents spoolfile.
Writing the whole thing out every time might be expensive... I'd thought a configurable flush frequency might be best, but forgot to mention that in the issue. I'm happy to wait until this becomes a problem to fix it.