Key path getter promotion

There was a good amount of discussion about this feature in this thread: [Pitch] KeyPath based map, flatMap, filter - #14 by Brent_Royal-Gordon

I directly linked to @beccadax's post, which I thought was the most convincing post in that thread. It seems to me there's another option that was called out explicitly in that thread: create specific overloads for map, filter, etc, that take keypaths. I think that option is net worse than both of the options you laid out here (subtyping and custom operator).

Making KeyPath<T, U> a subtype of T -> U makes the most sense to me and would clean up a lot of my code.