Cache json on disk. Fixes Issue #3.

The fix also implemented asynchronous loading so that the
UI doesn't hang as much when opening the app.