refactor: modules can only require std.base and std.debug.

* lib/std/table.lua (totable): Move implementation from here...
* lib/std/base.lua (totable): ...to here.
* lib/std/string.lua: Import core implementation from std.base
instead of argcheck wrapper from std.table.
* lib/std/io.lua (dirsep, catfile): Move implementations from
here...
* lib/std/string.lua (escape_pattern): ...here...
* lib/std/table.lua (invert): ... and here...
* lib/std/base.lua (dirsep, catfile, invert): ...to here.
* lib/std/package.lua: Import core implementations from std.base
instead eof argcheck wrappers from user interface files.
* lib/std/list.lua, lib/std/tree.lua (func): Remove spurious
require.
* lib/std/set.lua, lib/std/tree.lua, lib/std/vector.lua
(container): Fold into Container prototype constructor.
* lib/std/list.lua, lib/std/strbuf.lua (object): Fold into
Object prototype constructor.
* lib/std/string.lua (strbuf): Fold into StrBuf prototype
constructor.
* lib/std/math.lua (debug): Fold into X definition.
* HACKING: Add a description of how to use `require`
idiomatically in stdlib source.

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