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

I'm not terribly excited about this if block either but I thought it might be good to save the allocations when not needed, and to detect if we try to put stuff in those failure/success collections when we shouldn't (add to the empty ones I think will throw an exception)