rework CacheWriter writeAll() and deleteAll() to permit partial success

Hope I'm not being annoying and I'll probably end up putting some checking code in here, but I don't think users can get an exception in our code as it stands (even without any added checks). 

There could be a problem if they catch BulkCacheWriter exception and look at the successes and failures and assume a type. But for that assumption to be not valid, they would have been the one causing it (with a fauly CacheWriter impl)