Re-highlight annotations whenever an edit occurs

To make it less expensive, a method has been added to `AnnotationViewManager` to refresh not all annotations but only the highlights.
* This is used as a scheduled redraw task inside `SessionView`
to not make it a CPU hog.
* The destroy mechanism for `SessionView` has been restructured to accomodate multiple asynchronous destructors.

Should close #661.
Hrm. This function is extremely expensive... re-arranging text is about the slowest thing you can do on a re-render. Would it be difficult to add a function that checks the text nodes are within an existing span parent instead of removing & re-adding them all? 99% of the time, the highlighted annotations will be unaffected, yet this will re-render them every time.