functional: collect creates tables from multi-return iterators.

* specs/functional_spec.yaml (collect): Differentiate behaviours
of calling collect with single return versus multiple return
iterators.
* lib/std/functional.lua (collect): Inject new elements into the
collected values table using key:value pairs when the iterator
returns more than one value.
* NEWS: Update.

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