Adds Document.ToBytesAsync() — renders the PDF to an in-memory byte array without touching disk. SaveAsync is reimplemented on top of it (write ToBytesAsync() to the output path), so the disk and in-memory paths share one renderer.
Motivation: consumers (e.g. test suites uploading to object storage / multipart) needed PDF bytes without a save-read-delete round-trip through the project output dir.