reworked Isabelle annotation updating: ported to Scala, better abstractions and performance

Moved annotation/marker cache to IsabelleAnnotations/IsabelleMarkerAnnotations. This gives a faster check for changed annotations and is a better place to perform the annotation updates. This also helped with abstractions related to resource or document availability.
composite reconciling strategy (util)
additional annotation refresh after reconciling (fixes #55)

Additional annotation refresh is necessary because Isabelle does not fire change events for when e.g. error is deleted. This additional refresh ensures more robust display.
Merge branch 'annotation-rework'