Start on Date classes

NOTE: This pull request is NOT ready to be merged. I'm just looking for feedback on how to proceed at this point.

Would you prefer one big squashed commit? Lots of small commits in a branch? A pull request each step of the way?

How do you feel about the nested classes (like Date::Interval) -- I'm really liking them.

Any and all feedback appreciated. I've been sitting on this for a while, and would like to resurrect it to contribute it.
Thanks. I like the way overloaded methods give us more flexibility here, although it makes it tricky to decide when to override `self.new` and when to override `initialize`.

The idea here is to allow passing a "constant", such as `Date::Calendar::Gregorian`, for the common case, but allow more configuration for the rare cases, such as `Date::Calendar::Gregorian.new(date_of_transition_from_julian)`. (And for the super-common case, we use a default parameter.) It's a Ruby idiom I've used on occasion, to allow developers to guess the right choice without having to consult the docs.