84aee009

By: Michael Lynch <git@mtlynch.io>

Split Subfolder out of RelativeOutputPath

RelativeOutputPath served two purposes: an optional directory prefix
(the S3 subfolder) and a full backend-relative path including a
filename. Split the prefix into a dedicated Subfolder type and make
RelativeOutputPath always include a filename, validated at construction.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>