Enhance bridge for better target merging

When annotations are loaded/updated in either side, they will be
automatically transmitted to the other side by the bridbe plugin.

Then on the other side, the new data is merged into any existing one.

The problem is that when doing this merge, some fields (which are objects
themselves) should not be overwritten; they should be merged, too.

This change adds selective handling of the `target` field, which is
a list of objects. Now each individual target is merged, ever overwritten.

Furthermore, there are a few special cases when some fields
(inside targets) should not be updated at all.

Now those updates are refused.

Fixes #1198.