Upload multiple files, batching by backend for efficiency.
Groups files by their target backend, calls each backend's
upload_files once with all files for that backend, then merges
results in original order.
List of (path, content) tuples to upload.