Bug 1109772 - Refactor bookmarks data access API.

This'll be a non-trivial bunch of work. I'm still hacking away, trying to get the abstractions right. Starting with bookmarks.

Parts 1-7 already merged; parts 8-10 now ready for review.
These Javadoc style comments don't work. If you use the `///` style as this code previously did, Xcode will actually generate nice inline/popup documentation for you.