Fix include Comparable to pass in type.
Change Date.for_jdn to overloaded variant of Date.new
Move date calculations to Date::Calendar class

Currently we only implement Date::Calendar::Gregorian, but have the
flexibility to add others later.
Add some documentation for Date class
Don't specify return types for methods

Per @asterite, return type declarations are only intended for methods
that do not have bodies yet.
Allow subtracting a Date::Interval from a Date or another interval