[9.x] Make `Illuminate\Mail\Mailable` macroable (#40631)
[9.x] Make `Illuminate\Mail\Mailable` macroable (#40631)

This PR makes the \Illuminate\Mail\Mailable class macroable. A simple use-case is abstracting the options array when having multiple Mailables that you want to attach raw pdf data to:

```php
// Current:

Mail::send((new MyMail())->attachData($pdfData, 'filename.pdf', [
    'mime' => 'application/pdf',
]));

// Proposal:

Mailable::macro('attachPdfData', function ($data, $name) {
    return $this->attachData($data, $name, [
        'mime' => 'application/pdf',
    ]);
});

Mail::send((new MyMail())->attachPdfData($pdfData, 'filename.pdf'));
```
hafezdivandari/framework,arturock/framework,laravel/framework,JamesForks/framework,driesvints/framework,dwightwatson/framework,arturock/framework,dwightwatson/framework,samlev/framework,morrislaptop/framework,arturock/framework,driesvints/framework,lucasmichot/framework,JamesForks/framework,leo108/laravel_framework,lucasmichot/framework,leo108/laravel_framework,hafezdivandari/framework,morrislaptop/framework,samlev/framework,laravel/framework