Improve geocoding interface

Simplified interface is less obtrusive and removes code bloat.

 * Link geocoding-browser-redirection with `-l` switch.
 * Query coordinates via eval'd raw_input
Add geohash command help
Improved 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.
Improved 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