refactor: parameterize object init field type checking.

* lib/specl/std.lua (object_clone): If an object specifies a
`_parmtypes` table field, then use util.typecheck to ensure the
fields named by `objmt._init` have types that match.
* lib/specl/matchers.lua (Matcher._init): Replace function
definition with table `{"matchp"}`.
(Matcher._parmtypes): Specify that `matchp` must be a function
during instantiation.

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