Rework set/new attributes checks

Reimplement the compile-time checks for whether new/set are operating on
attributes that can be set (taking into account constructOnly attrs).

As a side benefit, the HavePropertyXXX typeclasses are now eliminated,
and autogenerated "_property" attributes can now trivially be
reimplemented separately from the rest of the bindings, since they are
decoupled from the generated bindings themselves.