refactor: use a function to export functional apis.

* lib/std/base.lua (argcheck): Accept "func" as an alias for
"function".
(export): When the last types element ends with "*", check type
of remaining unchecked args against it.
If there is no "*" mark in the types list, and more arguments are
passed than types entries, throw a "too many arguments" error.
Return the unwrapped function argument, so it can be captured
back into a local by the caller.
* specs/functional_spec.yaml (case, curry, eval, memoize): Check
these fixed argument functions throw a "too many arguments" error
when called with too many arguments.
* specs/math_spec.yaml (floor, monkey_patch, round): Likewise.
* lib/std/functional.lua (bind, case, collect, compose, curry)
(eval, filter, fold, map, memoize): Use base.export for
conditional argument checking. Simplify accordingly.
(functional): Rename from this...
(M): ...to this.

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