add NGramAnalyzer based on NGramTokenizer

here is fine, but I think you can also do json.getInt("min", NGramTokenizer.DEFAULT_MIN_NGRAM_SIZE) for the undefined case.