CacheKey should derive from str

I am using a redis-shard as a replacement for the redis client. 
The CacheKey failed this replacement since there are assertions that the key derives from basestring.
since this check makes sense to me, I thought it would be better (and require less code), to make CacheKey derive from str, so no proxy code is needed and it works with other clients.

I added an explicit test for binary keys just to make sure that is not harmed.