Varargs Implimented (Closes #29)

Yes, really closing #29 this time.

Varargs now work as in Ruby. Normal parameters are required.  A parameter
may be given a default value by following the declairation with an
assignment opperator (=) and a simple (aka safe) expression if all
subsiquent parameters are also optional.  The final parameter may be
proceded with a star (*) in which case zero or more arguments will be
combined into an Array and placed in this parameter.

TODO: it is still possible to create a function which does not follow the
rules about optional parameter placement. The behavior of such function is
strange and undefined.  At some point trying to define such a function
should raise an error.