Convert the month widget to exend Month

This changes the MonthWidget to extend the Month class, thus reusing logic.

While working on this, it became apparent that we needed better ways to generate URLs.  So a lot of URL related changes are packaged with this.