Takes a name and optional context_name returns a list of matches.
        Each match is a dict with:
           'higher' boolean DEF???
           'exact' boolean for exact match
           'ottId' int
           'name'  name (or uniqname???) for the taxon in OTT
           'nodeId' int ID of not in the taxomachine db. probably not of use to anyone...

def autocomplete(self, name, context_name=None, include_dubious=False):
        """Takes a name and optional context_name returns a list of matches.
        Each match is a dict with:
           'higher' boolean DEF???
           'exact' boolean for exact match
           'ottId' int
           'name'  name (or uniqname???) for the taxon in OTT
           'nodeId' int ID of not in the taxomachine db. probably not of use to anyone...
        """
        if context_name and context_name not in self.valid_contexts:
            raise ValueError('"{}" is not a valid context name'.format(context_name))
        if self.use_v1:
            uri = '{p}/autocompleteBoxQuery'.format(p=self.prefix)
            data = {'queryString': name}
            if context_name:
                data['contextName'] = context_name
        else:
            uri = '{p}/autocomplete_name'.format(p=self.prefix)
            data = {'name': name}
            if context_name:
                data['context_name'] = context_name
            if include_dubious:
                data['include_dubious'] = True
        return self.json_http_post(uri, data=anyjson.dumps(data))