Added disk caching

We query the local storage first, then the network. For common message
threads, we don’t need to re-query if the data is not different.