Pitch: Allow interchangeable use of `CGFloat` and `Double` types

@hborla and @xedin, tell me if this is an outlandish idea:

@scanon suggests considering the feature as “a tool that effectively implicitly adds a shadow of that API [that uses CGFloat] that uses Double instead.”

Can we model this feature in a way analogous to property wrappers? That is, suppose we treated a parameter of type CGFloat as though it’s a property wrapper parameter which takes a Double argument and “wraps” it, and a local variable of type CGFloat similarly. Would that model work (conceptually; it would not need to be implemented exactly so, of course) or totally fall apart somewhere?