Cache API responses for offline browsing

This adds a cache for API responses so the user can browse content offline
assuming that it was previously viewed with internet available. The
current implementation stores the JSON responses as files in the cache
directory. This was preferable to using a database because it is faster
and the storage space shows up under "Cache" rather than "App Data" so it
can be cleared independently from the user's stored data.

Note: This is different than offline storage of guides because the guides
and images are not stored in a permanent location.