refactor: differentiate module tables and prototype objects.

It turns out that documentation and code is much clearer when
we differentiate between `list` (the module table for `std.list`)
and `List` (the prototype List object), because that makes it
explicit whether we're calling a module function (`list.append`)
or performing an operation with the prototype (`List.clone {}`).
As a bonus, we gain a bit of speed by cloning the prototype
object from the module table, by virtue of not having a
`_functions` table to administer.
* lib/std/array.lua, lib/std/base.lua, lib/std/container.lua,
lib/std/debug.lua, lib/std/functional.lua, lib/std/io.lua,
lib/std/list.lua, lib/std/math.lua, lib/std/object.lua,
lib/std/optparse.lua, lib/std/set.lua, lib/std/strbuf.lua,
lib/std/string.lua, lib/std/table.lua, lib/std/tree.lua: Always
use the module table or prototype object as appropriate. Make
sure the LDocs don't contradict us.

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