Adds options to CleverError as an optional param, and displays them in the output.

It occurs to me this might be a security risk as we probably don't want to display headers with tokens in the logs. Wondering if opts should be refactored into its own class, with a to_s that would only show non-sensitive info?
Adds an options class.
Switches over to using new options object to obscure sensitive information.
Passes opts along every time we raise an error.