mem.c: 深度による変数のオーバーライド宣言の仕組みを追加

メモリーのスタックイメージにおける復帰位置を
mem_push_overlide(), mem_pop_overlide() によって記録しておき、
この復帰位置（深度）よりも新しい側に x という名前の変数が存在しなければ、
x をこの深度で作成しても良い。というルールに従って運用する。

mem_create_var()によって、現在の深度においての変数宣言を行える。

そして、読み書きの為のアクセスに関しては、
mem_read_var_memtag()（および糖衣構文 mem_read_var_value()）によって行う。
これは、x という名前をメモリースタックの新しい側から検索してきて、
最初に見つかった x へのアクセス手段を返す。
これによって、x という変数において、オーバーライドして局所変数（自動変数）を実現できる。

mem_pop_overlide() を行うことで、
現在の深度よりも新しい側の変数は全て破棄される。
実際の実装としては、メモリー開放などはされずに、ただ単にアクセス手段を失うだけです。

つまり現状ではメモリーリーク状態なので、
ここを本当にちゃんと開放するように mem.c を書き直す必要があるが、それは後回し。
忘れないようにメモ。

また、mem.c のテスト用に test_mem.c を追加。
ビルド方法は:
gcc test_mem.c mem.c stack.c complex.c -lm -o test_mem