Relocated ConfigException to the top-level namespace.
Removed terminate_main virtual method in config hierarchy and replaced
with more generic SystemExit exception.
Added macro helper for ::main functions to account for dealing with
exceptions and pretty formatting the output consistently.