SolrTextTagger -- Issue 10: PhraseBuilder now uses posInc and offset and ignores posLen.

This new implementation of StringBuilder is based on position increment and start/end char offsets. It can successfully build phrases for all TokenStreams that would also work well for normal Solr searches. There is still the possibility to encounter TokenStreams that can not be processed. In such cases a UnsupportedTokenException will be thrown.

AFAIK all such cases would also result in unexpected search behavior of Solr. StringBuilder can even correctly encode some TokenStreams that would result in problematic search behavior. E.g.  the 'DNS => Domain Name Service' synonym example used in the "Limitation" section of [Lucene's TokenStreams are actually graphs!](http://blog.mikemccandless.com/2012/04/lucenes-tokenstreams-are-actually.html) would be correctly processed. However Synonyms like "US, USA, United States, United States of America" would fail. See comments in the code for details.

StringBuilder is implemented in a way that commons cases (Token Streams with no tokens with posInc == 0) do require only minimum additional processing. For TokensStreams containing alternative tokens it does introduce some additional processing costs.

This also updates unit tests to test support of WordDelimiterFilter and SynonymFilterFactory.