In order to support annotation on objects other than entities we first need to decouple the annotation index from entities.
This involves a refactoring of the backend so that the entity replication and the annotation index tables store data that is bound to an object type + id rather than entity id only (since the id space is shared among different objects).
Additionally we need to generalize how we get properties and annotations from objects removing the link to the node layer from the index.
We also need to generalize the services that are node specific and that provide operations to compute the index so that they can be implemented on an object type basis.
Finally we need to generalize the way annotations are updated so that we can perform bulk updates from the index.