Represents an immutable, rule-based check on a metacard given a map of possible criteria to check
against. The class must remain immutable to account for the case where an admin submits
configuration changes during live ingest traffic; there must exist a deterministic boundary where
the rule (and all its fields) synchronously swap to the new configuration without corrupting the
ingest traffic (i.e. attempts to test a scheme criteria for an IP address value, which will
produce undefined behavior, resulting with incorrect attribute markings).