File uploads
TheUpload scalar is usable as an input type. The shared HTTP handler parses
multipart/form-data per the graphql-multipart-request-spec (operations, map, and
file parts) and injects each file as an UploadedFile into the resolver.
UploadedFile exposes filename, content_type, and a readable stream;
UploadedFile.from_bytes(...) is handy in tests. Malformed multipart maps are
rejected with a request error.