SE-0258: Property Delegates

This doesn't block off future uses of @+Uppercase names for other custom attributes. When you have an @Foo attribute, we go look up the name Foo via the normal name lookup rules. It should come to a type (or the program is ill-formed), and if the type is not a @propertyDelegate then the program is ill-formed. We can add other ways to state that a given type can be used as a custom attribute. Perhaps a given type cannot opt in to being, say, both a property delegate type and a runtime attribute type, but I think that's a reasonable restriction that doesn't limit our evolution too much.