Send message functionality done right

Ok.  I figure the send function is "done right" now :)  It worked before, but was a hack. This provides a base to do further work on.  I haven't touched any of your working code, but it shouldn't be too hard to adapt it to use the new data model that I've created (if it makes sense).

I totally welcome any comments you might have.  I'm new to Moose, so I might have done some strange things.  I'm also new to git, so might have done something strange.  I've tried to be pretty verbose in my commit logs, so they should give you a good idea of what I've done, and _some_ of the reasoning too.

The sample code I've been working with is
    use strict;
    use Data::Dumper;
    use EWS::Client;
    use DateTime;
 
    my $ews = EWS::Client->new({
        server      => '',
        username    => '',
        # password set in $ENV{EWS_PASS}
    });
 
    use Data::Dumper;
    my $m = EWS::Messages::Item->new(
        ToRecipients => 'me',
        Subject => "testing",
        Body => "This is a text, just a text",
        Categories => [qw(Red Blue Green)],
    );
 
    #print Dumper $m;
 
    my $m2 = EWS::Messages::Item->new();
    $m2->ToRecipients([
        { EmailAddress => 'me', Name => "Someone" },
    ]);
    $m2->Subject("testing2");
    $m2->ConversationTopic("no id here");
    $m2->Body("This is a text, just a text");
    $m2->Categories([qw(Fuzzy Blue Creature)]);
 
    #print Dumper $m2;
 
    $ews->messages->send([$m, $m2], { no_saved_copy => 1 });