Python-style arguments for user-defined functions

Argument defaults, keywords, and arbitrary lists for user-defined
functions.  Part of issue #8.

Parse-time changes:
1. Function parameters are moved to function body, along with extra code
to process them if Python-style arguments are passed.
2. Calls to user-defined functions are converted to JavaScript-friendly
parameters.

Runtime changes:
1. User-defined functions do some extra processing to setup the expected
arguments, if necessary.
2. User-defined function calls do some extra parameter processing before
making their call

Not supported by these changes:
1. Calling user-defined class functions with Python-style arguments
2. Calling built-in functions with Python-style arguments
3. Unpacking argument lists