container: distinguish between the two `functions` tables.

One is the core of Container with metatable as its metatable; the
other is metatable._functions, and is just a list of unpropagated
method functions. We don't want to give the latter a __tostring
metamethod or printing gets very weird.
* lib/std/container.lua (metatable._functions): Make a nometa
clone of the table we return.
* NEWS: Update.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
container: cleanup, speedup and bonus bugfix.

* lib/std/container.lua (mapfields): Factored out of
`metatable.__call` and optimised for speed.
(metatable.__call): Adjust accordingly.
(empty): Copied from table.empty to avoind introducing a require
loop.
(modulefunction): Wrap argument in a functable for easily
recognising what not to copy during cloning.
(metatable): Simplify.
* lib/std/object.lua: Import mapfields from Containec, but unwrap
it along with Container.prototype before saving in the Object
metatable for faster access.
Add appropriate LDocs.
* NEWS: Update.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
container: inline `filter` to only caller.

* lib/std/container.lua (filter): Remove from here.
(metatable.__totable): Inline `filter` here.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
container: drastically simplify and speed up `prototype`.

* lib/std/container.lua (prototype): Inline metaentry, and
simplify.
(metatable.__tostring): Use it.
(metaentry): Remove.
* NEWS: Update.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
container: inline calls to `empty`.

* lib/std/container (mapfields, metatable._init): Replace
`not empty` with `next`.
(empty): Remove.

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