Replace caching implementation with fetched results controller

By using the [NSFetchedResultsController](https://developer.apple.com/library/IOs/documentation/CoreData/Reference/NSFetchedResultsController_Class/index.html) class instead of creating our own caching mechanism, we have saved ourselves from spending ton of time re-implementing functionalities that the fetched results controller already provides. With the introduction of `NSFetchedResultsController`, our new app architecture has taken following shape:

![with_fetchedresultscontroller_design](https://cloud.githubusercontent.com/assets/115379/4516103/26c00d7e-4be3-11e4-96e4-f72dbf89976f.png)

And hear is the feed display workflow with `NSFetchedResultsController` in place:

![feed_display_workflow_with_nsfetchedresultscontroller](https://cloud.githubusercontent.com/assets/115379/4516106/39850ac2-4be3-11e4-929c-0d1a08fd7fd3.png)