Adding an initializer list specialization for is_contained allows for compile-time evaluation when called with a constant or runtime evaluation for non-constant values.
This patch doesn't add any uses of this template, but that is coming in
a subsequent patch.
This function arguments are backwards compared to the other overloads. Could we keep it consistent?