Exposes functions for validating types, and determining if a value matches a type.
@spec matches_type?(type :: term(), value :: term()) :: boolean()
@spec merge(left :: term(), right :: term()) :: term()
@spec valid_type?(term()) :: boolean()
@spec validate_types( types :: Keyword.t(), field_name :: atom(), opts :: Keyword.t(), schema :: Optimal.schema() ) :: [{atom(), String.t()}]