made AbstractCache::save throw exception if cache key contains a wildcard

This is a fairly simple modification, which ensures a cache key containing a wildcard character cannot be used.

Wildcards in keys cause a problem when deleteAll is called, as the presence of the wildcard will cause deleteByRegex to be called. Not only is this unexpected (and slower), it's possible this will result in an invalid regex (for example, if the id contains a forward slash)

This patch ensures AbstractCache:save throws an exception if such an id is used.