Multiple changes mostly for speed improvements:
- token document works on substrings
- creating inverse index gets tokens instead of ngrams
- specialize ngram creation for 1grams
- StringDocument can work with MutableString
- optimize stemmer for handling substrings and words
- added a simple regex cache to avoid recompilations while processing large corpuses
- fixed stemmer building through bindeps