style: Update cascade to take account of typed custom properties.
We have to do some additional work to compute typed custom properties and to handle cyclical declarations involving font-size. (Unfortunately there doesn't seem to be a really good way to split this patch up without spending a ton of effort, and I don't think it'd make the patch more clear. Sorry!) Make custom_properties::OrderedMap::remove public, so that we can remove cyclical custom property declarations from properties. We also need to insert the initial value (possibly typed) if necessary and detect if font size is cyclical and remove it in that case, so it makes sense to handle them in the same place instead of custom_properties mutating things behind the scenes and making it worry about typed custom properties. custom_properties::cascade takes two function arguments, inherited_computed and handle_keyword. This allows us to maintain separation of concerns wrt typed custom property registrations (also makes it clearer who is getting data from where). custom_properties::substitute_all and custom_properties::substitute_one gains function arguments compute handle_invalid with the same justification. custom_properties::finish_cascade is replaced by custom_properties::compute_ordering, which computes whether or not font-size's declaration is cycles, the custom properties to compute before early properties (including those upon which early properties depend), and the set of properties that are cyclical. Fix the comment on substitute, which does not type. Have Gecko's ComputedValuesInner::get_custom_properties return a properties_and_values::CustomPropertiesMap instead of a custom_properties::CustomPropertiesMap. This stores typed computed values as well. Replace Servo's Stylist::custom_properties with get_custom_properties, which returns a reference instead of an Arc, because it doesn't make sense to clone the Arc when we never need it as one. Also add get_parent_custom_properties, so a later patch in the series can inherit typed custom property values. Note that this also requires a change to ServoBindings.toml to account for replacing custom_properties::CustomPropertiesMap with properties_and_values::CustomPropertiesMap. Part 11 of a series of patches to implement the CSS Properties & Values API.