Added (unimplemented) provides for weak and custom sets.
Added macro to simplify definition of built-in and custom set types.

The macro is untested and the functions it uses are currently unimplemented.