Stack をArrayベースへと書き換え

Array の各unitからのデータ読み出しは原則としてコピー渡しとするようにしてある。
それに伴い Stack の stack_pop() と stack_read() 関数も、コピー渡しへと修正した。

これは、ポインタ渡しだと、Arrayのメモリーサイズを拡張した際に、
実質的に新しいメモリー領域へ全体をコピーしているが、
もしも過去にポインタとして受け取った参照を、外部の何かのコードが用い続けていた場合に、
メモリーの参照を失ってしまう。

また、もしもポインタ経由で直接書き込みを行うことに依存したコードがあった場合、
その書き込んだデータ（間接的に他のコードにより利用されることを想定していたであろう）は、
期待通りには参照されなくなり、バグの温床となりかねない。

そのようなポインタによる直接読み書きを行わないように注意していたとしても、
free() された領域は新たに malloc() された際に再利用されうる領域なので、
結局そこを間接的に参照し続ける状態は、厄介なバグの温床となりかねない。

そのため、Array での各 unit からのデータの読み出しは、原則としてコピー渡しとしてあり、
今回 Stack は Array をベースとして書き換えたので同様にコピー渡しとなりました。