Wider support of inputs for GetMulti

I wrote tests to cover 396 different situations with varying input/output types, partial cache hits, and transaction state. These should protect us from a great number of regression opportunities in the future.

I also improved the ```GetMulti``` method to support the following range of inputs: ```*[]S, *[]*S, *[]I, []S, []*S, []I```. ```PutMulti``` already supported these and ```GetMulti``` supported some of these partially, with bugs appearing only in certain cache miss occasions, or in the case of transactions.