Issues/reader performance improvements

Closes #2938

Some of the things addressed are:
- a jump in the scroll offset when backfilling posts ends
- cell layout issues due to post indexes changing due to a save while scrolling but cached row heights were not
- estimated row heights used when cached heights should have been used.
- Also fixes an issue with the subscription vc not being released from memory. 

@astralbodies @jleandroperez Would really love to get your thoughts about how this patch defers a save operation until after scrolling has finished.   

The post list waits to refresh its layout until after scrolling ends. A consequence is when new content is saved while scrolling, NSIndexPaths can point to new content that doesn't match cached row heights. Visual oddity ensues.  Waiting to save the context until scrolling stops is the simplest, most direct approach to address this that I could think of.  Would love to entertain alternate approaches.   I tried doing something fancy with some extra parent/child contexts but it got ... overly complicated ... but maybe there is a more elegant solution.  

Lastly, #2938 targets 4.7 as a bug fix but the change here is one I'd want to test for longer so i think we'll push to 4.8. 
It *shouldn't* but this was a good catch regardless. The reason why it shouldn't be called more than once isn't very clear looking at the view controller, and only becomes apparent if you look at the sync helper.  For paranoia sake I'll add a more obvious mechanism.