Data-backed custom pattern recognizer definition.
Builds a pattern definition or raises for invalid input.
@type pattern() :: %{name: atom(), regex: Regex.t(), score: float()}
@type t() :: %Obscura.Recognizer.PatternDefinition{ context: [String.t()], entity: atom(), invalidate: (String.t() -> term()) | nil, metadata: map(), name: atom(), patterns: [pattern()], validate: (String.t() -> term()) | nil }
@spec new!(keyword()) :: t()