add PerFieldAnalyzerWrapper support @ index time

    The Mapper creates PerFieldAnalyzerWrapper and uses that for
    indexing.

    At the moment this is pretty incomplete, you can add
    "EdgeNgram"/"Whitespace"/anything that accepts only
    "Version.class,Reader.class" arguments, plus all TokenFilters that
    accept "Version.class,TokenStream.class" as arguments. You must use
full
    class paths everywhere. LowerCaseFilter is called as

    filters => ["org.apache.lucene.analysis.core.LowerCaseFilter"]

    example:

        analyzers => {
            "author.gram" => {
                tokenizer =>
"org.apache.lucene.analysis.ngram.EdgeNGramTokenizer",
                min_gram => 1,
                max_gram => 7,
                filters =>
["org.apache.lucene.analysis.core.LowerCaseFilter"]
            }
        },

    so if you index a field named author.gram it will use the
    edgeNgramTokenizer with min_gram 1, and max_gram 7, and output the
    following analyzer(this is the log message when you create any kind of
    analyzer at index time):

     1392580670_grep_@[bz.brick.RAMBrick.Mapping.parseAnalyzer(Mapping.java:349)]
org.apache.lucene.analysis.ngram.EdgeNGramTokenizer({max_gram=7,
min_gram=1}) filters:
<["org.apache.lucene.analysis.core.LowerCaseFilter"]> TOKENIZING:
<Testing 1,2,3 1_underscore 2@at 3#hash> AS:
<[t][te][tes][test][testi][testin][testing]>

    it just outputs the tokens from "Testing 1,2,3 1_underscore 2@at
    3#hash".