@type error() :: %{ backtrace: list(), class: atom() | iodata(), fingerprint: String.t(), message: iodata(), tags: list() }
@type noticeable() :: Exception.t() | String.t() | map() | atom()
@type notifier() :: %{name: String.t(), url: String.t(), version: String.t()}
@type server() :: %{ environment_name: atom(), hostname: String.t(), project_root: Path.t(), revision: String.t() }
@type t() :: %Honeybadger.Notice{ breadcrumbs: Honeybadger.Breadcrumbs.Collector.t(), error: error(), notifier: notifier(), request: map(), server: server() }
@spec new(noticeable(), map(), list(), String.t()) :: t()