Array: ensure cloning existing arrays works correctly.

* lib/zile/specs/Array_spec.yaml (__call): Redo the specifications
to ensure cloning an existing array copies elements correctly.
Use a more `alien.array` like API for instantiating new arrays.
(realloc): Add missing specifications.
* lib/zile/Array.lua (_init): Implement new API to meet new
specifications. Use lib.argcheck to check argument types.
(copy, setzero): New private helper functions.
(setlen): Rename from this...
(realloc): ...to this, for consistency with alien.array APIs.
Manage array.used field from here.  Use lib.argcheck.
(push): Simplify. Use lib.argscheck.
(pop, __index, __newindex): Simplify.
(__tostring): New function. Return a string that will recreate the
array if passed to Lua load().

Signed-off-by: Gary V. Vaughan <gary@gnu.org>
Array: add a set method.

* lib/zile/specs/Array_spec.yaml (set): Specify a new method to
set a contiguous block of elements to a given value.
* lib/zile/Array.lua (set): Implementation to meet specs.

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