This new protocol is abstract over the target type, T. This diff flattens ViewInteraction and PropertyInteraction into a single protocol, greatly simplifying the overall type system and also making it possible for interactions to support novel target types.
This change introduces a feature regression: interactions can no longer support multiple target types via overloads. In practice, I found that this actually cleaned up runtime.add call sites (e.g. springs can't be added to views anymore, they must be explicitly added to a property), so I'm not particularly concerned about this regression.
If we do find that it's important for an interaction to support multiple distinct target types, then we can introduce variant Interaction types, e.g. InteractionVariant1, InteractionVariant2, etc... with corresponding runtime APIs.