fix issue with key not matching response key

some memcache protocol complient servers, such as kestrel and darner,
may return a different key in the memcache response than in the request.

Example:

    Request:
        get some-q/t=2000/close/open
    Response:
        VALUE some-q 0 4
        test
        END
use binary pickle proto instead of default text pickle

the higher pickle protocol is binary as apposed to plaintext, and
supposedly handles new-style classes more efficiently. Local testing of
pickling a dict with 100000 members and pickling resulted in sizes of:

    proto 2 (highest) == 13759562
    proto 1           == 13759560
    proto 0 (default) == 27666669

and time.timeit (number=300) times of:

    proto 2 (highest) == 4.15094685555
    proto 1           == 4.28701901436
    proto 0 (default) == 31.95591712

So it is a win for both speed (with cPickle), and size (~50%).