Cache read CSV files

This reduces *my* personal runs by two thirds, and is reasonably robust.  It's basically option 5 from #17.

Admittedly `pickle` wasn't my first choice for obvious reasons, but it is only used *after* validation on reads and it is considerably faster than manually marshalling the `datetime` objects with JSON.

Refs #17.