seporate CLI from main entry point and add global rescue block

This separation should also allow the management of the output of the
CLI to be placed away from the Methadone description.
It will also support us throwing errors from within the code, which we
get to next.