Introduce highlighter extension point

1. Added extension point for highlight implementations

Now anchors have a "type" field, and registered highlight
implementations are called to attempt to create highlights out of them.

This allows using alternate highlight implementations.

2. Make Anchors simple data structures (instead of methods)

The original idea behind Anchors was always that they are only a piece of data,
which can be used to create a highlight, and which are calculated by the anchoring
strategies.

Different types of anchors are supported.

Out of convenience, anchors were originally implemented as objects.

The only behavior which the different types of anchors had to implmenet individually
was the actual creation of the highlights. (Because different types of anchors are
usually represented by different types of highlights.)

However, with the generalization of the highlight creation, this is no longer the
responsibility of the anchors themselves; now Annotator calls the registered
highlighers, which look at the type of the anchor to see if they can create a
highlight out of this anchor.

This has removed the last piece of intelligent behavior from the anchor
implementatations, so there is no point in keeping them objects now.

(And annotator is looking inside the objects to make decision on their internal
type field, whch is not proper object-oriented design anyway.)

Therefore, I have changed the implementation: I have moved all the code back
from then abstract Anchors class to Annotator class, and changed the anchoring
strategies (that create the anchors) to output simple data structures.

This also makes it easier to introduce new anchor types; now you don't have
to create a new class; you can just start to return the new type in your
anchoring strategies, and accept the new type in your highlighter implementations.

3. I have also renamed some of the methods do make more sense.