Flexible heredoc finally indents like the code around it

A heredoc closing marker had to sit at column zero, so a query or a template inside a method broke the indentation of the entire file and every code standard had an exception for it.

public function query(): string
{
    return <<<SQL
        SELECT o.id, o.total
        FROM orders o
        WHERE o.placed_at > :since
        SQL;
}

The closing marker’s indentation is stripped from every line, so the string contains no leading whitespace despite the source being indented. A body line indented less than the closer is a parse error rather than a silent difference, which is the right choice. The one hazard is mixing tabs and spaces between the body and the marker — they are compared as characters rather than as visual width, so a file that looks aligned can fail to compile.