Improve messages
Add json command line output

Potentially useful for integration with other command line tools.

* Use `puts` instead of print to supress output to stdout
Add date inference

Allows incomplete dates to be parsed by replacing missing fragments with
localtime.
Fix json and geocoding mutually exclusive

Geocoding requires coordinate input from a prompt which json hides.
Improve readability of dates in cache

* Use date subclass with overridden __repr__ method
Fix load defaults first

Load and set default arguments before using their state.

* set_defaults returns dict with loaded default arguments