[Pitch #3] SE-0293: Extend Property Wrappers to Function and Closure Parameters

I like this version so much better than the previous one. So far, I only read the parts the I found the most concerning from the previous proposal, but I'll read it in full later.

The call site semantics still feels dangerous to me, because the parameter's type (Wrapped or Projected) doesn't match the function's type at the parameter's location (Wrapper).

I wonder if it can be helped by requiring the call site parameters to be annotated with @Wrapper for both wrapped and projected values. E.g.

func foo(@Wrapper value: Wrapped) { /*...*/ }
foo(@Wrapped value: wrapped)
foo(@Wrapped $value: projected)