refactor: rationalize deprecation interfaces.

Tracking one deprecation warning per deprecated function is
fiddly and confusing.  Change the semantics to this: by
default calling deprecated API fires a warning message; turn
off the messages with `_DEBUG.deprecate = false`; elide
deprecated APIs entirely with `_DEBUG.deprecate = true`.
Easy and useful :)
* lib/std/debug_init/init.lua (_ARGCHECK): Remove.  Adjust all
callers to use _DEBUG.argcheck instead.
(_DEBUG): Always a table, with fields initialised according to
global _DEBUG if necessary.  Simplify all callers accordingly.
* lib/std/debug.lua (setcompat, getcompat): Remove.
(DEPRECATIONMSG): If _DEBUG.deprecate is nil, always return a
deprecation message, otherwise the empty string.
(DEPRECATED): If _DEBUG.deprecate is truthy, don't return a
function at all.
(_setdebug): New private function.  A reliable way to jigger the
_DEBUG table contents, without worrying about nested specl
environments.
* specs/spec_helper.lua (setdebug): Import std.debug._setdebug
into the outermost execution environment.
* specs/debug_spec.yaml (extend_base): Add _setdebug.
Adjust other behaviour specs to match saner _DEBUG.deprecate
semantics.
* specs/functional_spec.yaml, specs/list_spec.yaml,
specs/string_spec.yaml, specs/table_spec.yaml: Adjust deprecation
warning behaviour examples to match new semantics.
* NEWS: Update.

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