Implement CAS.

This is a critical part of memcached usage.

- The API follows the pattern set by pylibmc, where CAS values
are returned to the caller, and not python-memcache, which
magically caches values internally.  It's simpler and much
more obvious, where in python-memcache you have to enable it
explicitly (since it leaks if you're not aware of it) and
periodically flush the cache.

- Performing a CAS with a cas value of None is equivalent to
an add.  This is logically doing a compare-and-set saying
"compare against the lack of a value".  The common pattern is
wanting to set a value as long as nobody else has written
something since you read its value, so if you read that the
item didn't exist, CAS becomes ADD.

- Multi-CAS is supported through set_multi, as well as performing
some updates with CAS and some not in a single batch:

mc.set_multi({
    ('key', cas): value1,
    ('key2', cas2): value2,
    'key3': value,
}]

- The cas() API is redundant with set_multi, but was added for
parity with other Python memcache clients.  I'm not sure if this
is actually worth having.

- delete() supports CAS.