Use cli.json to build top level params

An event is sent out that allows users to modify the top level
params before we hand the params off to the parser.

An event is also emitted when the args are parsed so additional
handlers can do what they need (configure debug logs, etc.).