Json output

Add support for basic JSON generation in Calendars
This seems broadly reasonable. :+1: