Download multiple files with each rsync invocation.

This turns out to make syncs at least 3X faster.

It also allows for greater concurrency: having many short-lived rsync
processes casued issues with piled-up zombies, but the longer-lived
processes don't have this problem, so we can have more of them.

For simplicity, this also removes the "single get" special-case. Now a single get is just a multi_get (now renamed simply "get") with a cardinality of 1. 
`sum(len(t) for t in k2t.values())` is easier to read