Fix bug #1539716: FMSLogo no longer crashes when procedures have lots of inputs >30000.
The bug was that gather_some_args() was recursive and processed a single argument in each call. So if there were lots of arguments, trying to gather them could blow the stack. The fix is to rewrite gather_some_args() to be iterative.