Write is pretty basic, but after some thought I've come to believe we don't want write multiplexing. So Writable should get it's own interface:
type WriteableFilesystem interface {
Put(ctx context.Context, f File) (string, error)
}
This way mix can not implement this interface, which'll show users they must first demux before writing.