Important refactoring to the structure of annotator_id, target_id,
Label, and Rating:

  * target_id is now inside of a Target object, which carries the KB
    info that was previously strangely located inside Annnotator.
    Both Rating and Label now have the same two required fields
    (Annotator and Target), and maybe that means that they should be
    converged into just one.

  * annotator_id is now defined with a typedef and used in several
    places as the key on a map.  Instead of having lists of Label in
    some places and LabelSet in others, we know have the same
    structure in all three places:

       Token.labels = map<AnnotatorID, list<Label>>
       Sentences.labels =   same
       ContentItem.labels = same

  * Similarly, the ratings property on StreamItem is now:

      StreamItem.ratings = map<AnnotatorID, list<Rating>>

I will follow this up next with further improvements to comments a few
more cleanups.