Make RedundantCacheGroup properly handles partial failures

Hello @eford1, @chaosgame, @nicks, 

Please review the following commits I made in branch 'xiao-let-RedundantCacheGroup-handle-partial-failure'.

e350ba808399bd6d0f01416b99951918718da4e3 (2014-09-29 14:00:13 -0700)
```
Make RedundantCacheGroup properly handles partial failures

If it gets a partial failure, it will properly propogate existing results
and throw another partial failure.

It stops at the first time when an error happens and propogate that error
to upstream, in other words, it will fetch failed keys even if there are
other layers to try.
```
R=@eford1
R=@chaosgame
R=@nicks
Lets add a function that splits out a single error across a list of keys to be passed to `PartialResultError`.  This is not the only place where we have code like this.