Tundra: return to earlier `fetch-keys` (over `fetch-key`) DataStore interface

This design requires a little more work from DataStore implementers, but allows
significantly more flexibility in a performance-critical area. Opens up a number
of possibilities incl. parallel fetches, composed DataStores, etc.
Tundra: expose public `>safe-keyname`, `<safe-keyname` util fns
Tundra: optimize Faraday, S3 DataStore impls for new `fetch-keys` API
Tundra: sanity check DataStore's `fetch-keys` result
v2.4.0-RC7