CLN: make _add_delegate_accessors generic
CLN: move Properties into its own file and add classmethod there