Issues/46 comments refresh

This branch does a few things:
- Refactors to have only a Comment model. AbstractComment and ReaderComment are removed from CoreData.
- Adds MigrationMapping to wrangle the changes to core data.
- Moves the comment syncing logic into the existing Comment service.
- Adds infinite scroll support to the reader comments. 
- Creates a sync helper class (in swift!) to wrangle syncing state.
- Adds support for estimated row heights and cached row heights to WPTableViewHandler.

Closes #46 
I think when the deleted comment is the first or last this won't work as expected. The best example I could think of is if every comment has been deleted:

- `commentsToKeep` will be empty
- `starting` and `ending` will be `nil`. `nil` might also be a problem, so let's say there's 1 comment left. The important thing is that `starting == ending`
- the predicate is `hierarchy >= X AND hierarchy <= X`, which is equivalent to `hierarchy = X`
- `commentsToKeep` contains `X`, so no comment is deleted

I think `mergeHierarchicalComments `/`deleteCommentsMissingFromHierarchicalComments` need to know `page`/`number` to calculate `starting`/`ending`