Added search filter functions.

Added support in the elasticsearch DSL for the
filter functions defined in http://tinyurl.com/qzobc69
There seems to be a pattern emerging here with the OrFilter slice.

How about a higher level function that abstracts that out?

e.g.

    func orFilter(singleFilter func(value string) elasticsearch.Filter) func([]string) elasticsearch.Filter {
        return func(values []string) elasticsearch.Filter {
            filter := make(elasticsearch.OrFilter, 0, len(values))
            for _, v := range values {
                 filter = append(filter, singleFilter(v))
            }
            return filter
        }
    }

    func tagsFilter(value string) elasticsearch.Filter {
        return elasticsearch.TermFilter{
            Field: "CharmMeta.Categories",
            Value: value,
       }
    }


Then you could have:

    "tags": orFilter(tagsFilter),

above, and others too.