Add labels and limits to Recurrence interface and update recurrence implementations.
Update calendar constructors to take in recurrence types.
Make Calendar factory add the default recurrence types to each Calendar it builds.
Use a recurrence's label as it's unique id.
Ensure Event interfaces are injected rather than the Event class.
Ensure Event interfaces are injected rather than the Event class.
Rename abstract registry to be clearer.
Restructure calendar abstraction.