Significant changes to calendar class and methods

- Calendar class hierarchy changed
- Calendar class validity method defined
- are_good_dates() renamed to are_good()
- Lots of calendar related documentation written