Create direct linking between matching annotation and annotation-end elements

Saves all the repeated lookup needed to search any matching annotation-end elements (or at least reduces it to once at loading time). Next to the code simplifications in this patch it will also be helpful to properly (and soon explicitly) delete annotations contained in deleted text ranges.

Needs some discipline to make sure all annotation nodes are always properly linked, but should be doable, as those nodes should be only changed under our control anyway.

No measurable changes in existing benchmarks.

Part of series to fix remaining annotation problems.