Error struct
@type t() :: %Jiraffe.Error{__exception__: true, details: map(), reason: atom()}
@spec new(details :: map() | String.t()) :: t()
@spec new(reason :: atom(), details :: map() | String.t()) :: t()