refactor: make all monkey_patch functions work the same.

* specs/std_spec.yaml, specs/io_spec.yaml, specs/math_spec.yaml,
specs/string_spec.yaml, specs/table_spec.yaml (monkey_patch):
Specify injection of all exported apis into the given namespace.
* lib/std/base.lua (copy): Support an optional `dest` argument.
(merge): Like copy, but don't overwrite pre-existing entries at
the same key.
* lib/std.lua.in, lib/std/io.lua, lib/std/math.lua,
lib/std/string.lua, lib/std/table.lua: Use merge and copy to
simplify tracking and injecting monkey_patches.
* specs/std_specl.yaml (barrel): Specify behaviour of running all
monkey_patch functions, and recreating the legacy global api by
additionally injecting those functions.
* lib/std.lua.in (barrel): Update to meet tighter specifications.
* HACKING: Note about global hygiene and use of monkey_patch ().
* NEWS: Update.

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