Pass pointers rather than interfaces to {get,put}FreeConn

This should be a bit faster, since the compiler can remove
a few instructions.

Before:

mov    0x7360e0,%rax
xor    %rbp,%rbp
cmp    %rbp,%rax
je     4397f6 <gomemcache/memcache.(*Client).getConn+0x116>
mov    0x50(%rsp),%rbx
mov    %rbx,(%rsp)
mov    0x58(%rsp),%rcx
mov    %rax,0x8(%rsp)
mov    %rcx,0x10(%rsp)
callq  4392c0 <gomemcache/memcache.(*Client).getFreeCon

After:

mov    0x50(%rsp),%rbx
mov    %rbx,(%rsp)
mov    0x58(%rsp),%rbx
mov    %rbx,0x8(%rsp)
callq  439270 <gomemcache/memcache.(*Client).getFreeConn>
Don't create a tcp Client for benchmarkConcurrentSetGet

This was wrongly added a few commits ago
Add support for not having timeouts when talking to servers
Disable timeouts for benchmarks
Don't prevalidate keys

Instead, wait for a reply for the server indicating the arguments
were invalid. There's no point in validating the key in the client
when the server is doing so too. There's, however, a small tradeoff:
since we're using the binary protocol some keys which are not valid
when using the text protocol will be accepted.
Add a benchmark for cache misses
Optimize the code path for reusing connection

Removed a branch when there's no error and a function call when
there is.
Cache Addr method results in fields, since they won't change