set: derive from `std.object.Object`.

* specs/set_spec.yaml: Describe expected behaviour of set as an
Object.
* specs/spec_helper.lua (have_member): New custom Specl matcher.
* specs/specs.mk (specl_SPECS): Add specs/set_spec.yaml.
(EXTRA_DIST): Add specs/spec_helper.lua.
* std/set.lua (delete, insert): Return the modified set.
(difference, intersection, propersubset, subset)
(symmetric_difference, union): Coerce a table in argument 2 to a
set.
(new): Return a new Object, with metamethods rolled in.
(M): Return a callable table that forwards module calls to the
`new` function.
* NEWS: Update.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>