Bug 1109772 - Refactor data access API. (WIP)

This'll be a non-trivial bunch of work. I'm still hacking away, trying to get the abstractions right. Starting with bookmarks.

Pull request here for clarity; do not merge this yet.
To simplify that a little bit: live changes in the tableview, while you are watchingbrowsing it, are extremely annoying from a UX POV and should probably be avoided. I think the only time we refresh a tableview that you already have or had open is when you:

* Go back to the view because you had the app in the background or you had selected a different view in the app previously
* Manually pull to refresh