Abstract Tokenization into an Interface

Make N-gram models more flexible.
Put Everything in a tfidf package

It was an oversight not to do this before.
Move Ngram Code into ngram package