ユーザー定義function内で再帰を行えるように修正。また再帰テストに samples/fact.bas を追加

戻り値が、「関数名と同名のローカル変数への代入」という構文が盲腸みたいになってる。

その名前が戻り値用のローカル変数か、または関数か、どちらとして扱うかの判断を、
要素数が2以上かによって判断している。
まったくエレガントとは言えない泥臭い方法で行っている。
なんとかしたい。
これちょっと全体いじったらすぐ壊れそうだ。