identifier_list, expression_list のバグ修正

これら非終端記号は、identifierやexpressionの集合を意味してて、
（構文解析段階での）戻り値としてリスト中の要素の個数を返すのだが、
要素が1個、または複数の場合しか動作を書いてなかった。
要素が0個の場合を書いて無かったので、その場合に変な値が返って、それによって色んなところが
変な挙動する原因となっていた。
ので、これを修正して、0個の場合は0を返すように修正した。

それと、ユーザー定義function内でのローカル変数のエラーチェックについての修正。
ローカル変数としてちゃんと作れたか（変数リストに存在させられたか？）のチェックなのに、
ローカル以外にグローバルも含めてチェックしていたので、
これだと、もしもローカルで作成に失敗していて、かつ、既にグローバルに同名の変数がある場合に、
ちゃんと作成できたと判断してしまうはず。
と思ったので修正して、
作成成功の確認を、ローカル変数リストのみから行うようにした。

というか、なんでこんな間違いしてるんだろうか？と思って過去のコミット見たら
「なんでローカルなのか、わけ分からないのでグローバルに変えた」とか言ってグローバルに修正してやがった…
もっと慎重にやれよと言いたいw