I think whatever maps closest to how ace does it, and is simplest to implement would be best.

Semantically, I might want something like a `createAnnotation(...)` call, and then have a corresponding `annotation.delete()` call? But if it's expensive to change ace's annotations, then batch change calls - like replacing all the current annotations w/ a new set - make sense.

In my own code, I'll probably add a slightly higher level API on top of ace's annotations in order to abstract some of the details of using them.