'Sends a mutant to the remote web server.
:param callback: If None, return the HTTP response object, else call
the callback with the mutant and the http response as
parameters.
:return: The HTTPResponse object associated with the request
that was just sent.'

def send_mutant(self, mutant, callback=None, grep=True, cache=True, cookies=True, error_handling=True, timeout=None, follow_redirects=False, use_basic_auth=True):

    uri = mutant.get_uri()
    data = mutant.get_data()
    headers = mutant.get_all_headers()
    if cookies:
        mutant_cookie = mutant.get_cookie()
        if mutant_cookie:
            headers['Cookie'] = str(mutant_cookie)
    args = (uri,)
    kwargs = {'data': data, 'headers': headers, 'grep': grep, 'cache': cache, 'cookies': cookies, 'error_handling': error_handling, 'timeout': timeout, 'follow_redirects': follow_redirects, 'use_basic_auth': use_basic_auth}
    method = mutant.get_method()
    functor = getattr(self, method)
    res = functor(*args, **kwargs)
    if (callback is not None):
        callback(mutant, res)
    return res
