go fmt
Fix key name in debug message
Assign unused value to _
Move code to start a local memcached server to its own function

Also, make sure the socket does not exists before starting the
server.
Add a couple of simple benchmarks for set/get
Use memcache binary protocol rather than text

Increases performance by 15-20%, specially for large values.
Return a public error for respItemNotStored
Keep idle connections in a channel rather than a slice

This speeds up concurrent tests by 10%, while slightly decreasing
single process performance.
Add concurrent benchmarks
Remove unused variable
Use a setter for the timeout

This way we can remove a method call in every operation. Performance
impact is small, but there are no downsides.
Use unsafe string to []byte conversion

Include a fallback which doesn't use unsafe, right now enabled
for appengine (although this doesn't make much sense because
you can't connect to an arbitraty memcached server from gae, but
we can alter the tag later).
Wrap net.Addr into an struct

Since we're calling String() very frequently on the net.Addr objects,
it makes sense to cache it, since it's always constant for the same
address. This reduces significantly the number of allocations in
concurrent benchmarks (~15%).
Add a concurrent test for small values
Remove benchmark with 50 threads, add a couple with 20 threads
Report MB/s in benchmarks
Use a buffer to batch writes of header and key

Also, buffers are reused when possible, using a channel as a pool.
This gives us a massive speed up in parallel tests.
Add file with original benchmarks

Run with the code just after forking it. Comparing with current
benchmarks, the difference is pretty big:

benchmark                               old ns/op    new ns/op    delta
BenchmarkSetGet                            214443       192399  -10.28%
BenchmarkSetGetLarge                       262164       200473  -23.53%
BenchmarkConcurrentSetGetSmall10_100     82561221     70219863  -14.95%
BenchmarkConcurrentSetGetLarge10_100     96067285     79718583  -17.02%
BenchmarkConcurrentSetGetSmall20_100    152834658    127891303  -16.32%
BenchmarkConcurrentSetGetLarge20_100    202574186    153507440  -24.22%

benchmark                                old MB/s     new MB/s  speedup
BenchmarkSetGet                              0.03         0.03    1.00x
BenchmarkSetGetLarge                         4.82         6.31    1.31x
BenchmarkConcurrentSetGetSmall10_100         0.07         0.09    1.29x
BenchmarkConcurrentSetGetLarge10_100        13.16        15.86    1.21x
BenchmarkConcurrentSetGetSmall20_100         0.08         0.09    1.12x
BenchmarkConcurrentSetGetLarge20_100        12.48        16.47    1.32x

benchmark                              old allocs   new allocs    delta
BenchmarkSetGet                                18           10  -44.44%
BenchmarkSetGetLarge                           19           10  -47.37%
BenchmarkConcurrentSetGetSmall10_100        58469        10276  -82.42%
BenchmarkConcurrentSetGetLarge10_100        59848        10263  -82.85%
BenchmarkConcurrentSetGetSmall20_100       117177        20705  -82.33%
BenchmarkConcurrentSetGetLarge20_100       120173        20650  -82.82%

benchmark                               old bytes    new bytes    delta
BenchmarkSetGet                              2479          202  -91.85%
BenchmarkSetGetLarge                         7537         1217  -83.85%
BenchmarkConcurrentSetGetSmall10_100      3101520       235682  -92.40%
BenchmarkConcurrentSetGetLarge10_100      8330341      1239295  -85.12%
BenchmarkConcurrentSetGetSmall20_100      6318072       479380  -92.41%
BenchmarkConcurrentSetGetLarge20_100     16884200      2501016  -85.19%
Move code to open a connection memcached to a function
Store an *Addr rather than a net.Addr in conn

Calling its String() method should be faster.