One portable request for a registered operation.
@type t() :: %Spectre.Operation.Request{ branch: atom() | String.t() | nil, id: String.t(), input: term(), metadata: map(), operation: atom() | String.t(), phase: atom() | String.t() | nil }
@spec new(atom() | String.t(), term(), keyword()) :: t()
@spec validate(t()) :: :ok | {:error, term()}
@spec validate!(t()) :: t()