Cache 1033476

* [x] Add caching of topics too.
* [ ] Make the loading bar disappear at the correct time. Currently it disappears early.

This adds an option for updating the cache if the user doesn't have many documents cached already.

* Many is defined as 5 or less. 
This .then should not be inside the .catch. In general, you don't want to put a .then/.catch inside a .then/.catch, you want to return a thing from the first one, and then add another .then to it. Remember than Promises are designed to avoid code that looks like `>`.

Reading the code again, I'm actually not 100% sure this is right, but I *think* this is what you want instead.

```
yaocho.factory('cacheTopic', ['Kitsune', 'KitsuneCorpus', 'KStorage', '$rootScope',
function cacheTopic(Kitsune, KitsuneCorpus, KStorage, $rootScope) {
  return function(topic) {
    return KStorage.getSet('documents:' + topic.slug)
    .then(function() {
      console.log("documents: " + topic.slug + " already exists...");
    })
    .catch(function() {
      return Kitsune.documents.all({
        product: $rootScope.settings.product.slug,
        topic: topic.slug,
      })
    })
    .then(function(docs) {
      var docKeys = docs.map(function(doc) {
        // Cache the doc while we're at it!
        KitsuneCorpus.getDoc(doc.slug);
        return 'document:' + doc.slug;
      })
      var key = 'documents:' + topic.slug
      console.log('adding subtopics:');
      console.log(docKeys);
      return KStorage.putSet(key, docKeys);
    });
  });
}
```