WL-3170 SignupEmails produce a list of events

The behaviour of generating a list of events for an email is specific to
the type of email. Where common behaviour exists among emails this could
be implemented through inheritance.
WL-3170 Create an AllUsers email type

This combines the common behaviours of sending an email to all users as
as required when

* Creating a meeting
* Modifying a meeting
* Cancelling a meeting
WL-3170 Email can be a cancellation

Explicitly mark whether an email is a cancellation is not, used in making
the iCal file later down the line.
WL-3170 Generate events for all users

Implemented the generateEvents method.
WL-3170 Common behaviour for Attendee emails

When an email is sent to an attendee because they have been signed up.
WL-3170 Promote methods to SignupEmailBase
WL-3170 Implement Attendee email type
WL-3170 Remove unnecessary param to helper

Currently it takes a list of timeslots for simplicity but this is easily
extracted from the meeting object.
WL-3170 Attendee cancellation email gets events

When an attendee withdraws their attendence, this email is sent.
WL-3170 Implement an organiser email

Constructs a list of all attendees and adds it to the event.
WL-3170 Rename addAttendeesToAddUsers
WL-3170 Define helper for addAttendees

Before we had to know about signupFacade to get the user ids, now we can
use the calendarHelper directly.
WL-3170 Finalise impl of OrganizerEmail
WL-3170 Implement for CancellationEmail
WL-3170 Create TransferEmailBase class

Groups the behaviour of the the SwapAttendeeEmail and the MoveAttendeeEmail
WL-3170 Transfer implementation code

For the TransferEmail case
WL-3170 Transfer Email implements timeslot change
WL-3170 Transfer email generates events
WL-3170 Remove unused method
WL-3170 Finalise class-agnostic events