Range search for previous and next occurrence.

Created functions for finding the previous and next schedule occurrence,
within a specified date range.
 Consolidated intervals, EndDateTime, Enforced event range.

Consolidated four redundant event "intervals" variables into a single
variable.
Added Event.EndDateTime.
Enforced event start and end date on all Schedule class functions.
Fixed bug in yearly event builder (which was causing some of the yearly
unit tests to previously fail.)
Fixed unexpected/counterintuitive behavior with events with fixed number
of occurrences, wherein excluding dates from events with fixed
occurrences, would increase the last occurrence date.
Added additional yearly unit test to test the new yearly temporal event
builder code.
Changed  the number of occurrences functionality

Modified the number of occurrences functionality, so that setting the
number of occurrences will calculate a new ending date. This supersedes
problems with the previous way that number of occurrences worked.

Added a multi function unit test, that tests and demonstrates all the
added functionality.

Fixed a (bug) wherein previous and next occurrence functions were not
returning anything on excluded dates. Now, the previous and next
occurrence functions will continue searching within the applicable range
until they find an actual occurrence.
minor changes

minor changes
Added Entry.HasOccurrences() function.

Added Entry.HasOccurrences() function.
Event class utility functions

Most notably, added AreEventSchedulesEqual().
Fixed a bug in Event.CanProduceOccurrences()

Fixed a bug in Event.CanProduceOccurrences().
A couple utility functions were added to the DateRange class.
Merge branch 'master' of https://github.com/LifeTechSys/ScheduleWidget into LifeTechSys-master

Conflicts:
	ScheduleWidget/ScheduleWidget/ScheduledEvents/FrequencyBuilder/ConcreteBuilders/YearlyEventBuilder.cs
Merge branch 'LifeTechSys-master'