TimeZoneConverter: move to named captures.

This makes it easier to decipher what matches what and how the defaults
come to be set, in my opinion.
TimezoneConverter: add support for "from" timezone.

We've always been able to convert from a given timezone, but they
weren't allowed to explicitly say so.

The example query exposed a bug in the 'PM' handling for the 12
o'clock hour which is also resolved herein.

Fixes #631.
DuckDuckGo: expand trigger-space.

- Add "duck duck go" trigger.
- Add possessive versions of triggers.
- Allow triggers to appear anywhere in the query.
- Skip prepositions and definite articles before key conversion.

Fixes #645.
DuckDuckGo: add spacing variations for 'duck duck go'.

Who knows how someone may type it, so we'll assume they mean us no
matter what craziness is involved.

Also, clean up the tests a bit such that text changes need only be done
in one place, while the triggering can be run in multiple places easily.
Merge pull request #646 from mwmiller/ddg_is_duck_duck_go

DuckDuckGo: expand trigger-space.
Merge pull request #632 from mwmiller/tz_conv

TimezoneConverter Updates.
Convert the Hijri package to a generic Calendar package
Add support for conversion to/from the Jalali calendar
CalendarConversion: use DatesRole
CalendarConversion: update output format.

Also rework the logic somewhat to (potentially) make it easier to
follow.