Add exception context management

Now you can wrap an area of code with a context manager
and all exceptions raised within it will append the argument
passed into the context manager to the exception message. This
makes debugging config errors thrown from the cli easier as
they have context surrounding them. This was actually being done
already, but this commit standardizes how it's done.