Calendar rebase

This replaces #1281.

Fixed unit tests and cleaner history based on Scott's rebase. Unit tests work in latest FF and Chrome but still fail via grunt. @jzaefferer You mentioned an upcoming improvement for asycTests?
That's what the “Keyboard handling: input” test does. The “Keyboard handing: calendar” test handles switching days/months/years and is duplicated in calendar_core.js.