Use shared key set dictionaries
Fix bug with MTLPropertyAttributes.type.
MTLPropertyAttributes -description, -debugDescription
MTLPropertyAttributes protocol property enumeration

Also cleans up some of our internal APIs