stdlib: resync from upstream and reorganise hierarchically.

* lib/specl/std.lua (std): Return this new top-level namespace.
(std.func): New namespace for std.functional apis.
(std.string, std.io): Likewise.
(std.table): Likewise, adding totable api from upstream.
(std.object): Likewise, with a callable metatable like upstream.
(std.strbuf): Likewise, sync with Object based upstream
implementation.
* lib/specl/util.lua: Adjust.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
stdlib: import prettyprint improvements from upstream.

* lib/specl/std.lua (render): Output table keys in order.
(prettytostring): Omit quoting for table keys that are already
valid symbol names.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
matchers: contain matcher now accepts std.objects.

Now that stdlib objects convert to tables by default (which in
turn prettyprint with ordered keys suitable for expectations to
compare against), should_contain can coerce an unknown object to
a table and search within that.
* specs/matchers_spec.yaml: Specify desired behaviour when passing
an object to the contain matcher.
* lib/specl/util.lua (type_check): Support "object" in the type
list, to denote a table that object.type recognises.
(M.totable): Re-export this from specl.std.
* lib/specl/matchers.lua (matchers.contain): Accept an object, and
coerce it to a table with std.table for comparison purposes.
* docs/specl.md (contain): Update.
* NEWS: Update.

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