Use Sentence representation

I moved the taggers project forward to use a `Sentence` representation.  I had some interesting problems with the constraints on taggers w.r.t. co/contra variance.  I reworked this by making a `ConstrainedTagger` and now the code is much simpler (and it also compiles).  One scary part is that when you deserialize taggers from strings, you can cast them to a bad type.  I.e. you could cast a `PatternTagger` to a `Tagger[Sentence]`.