Adding multiple arity support for functions

Changes:
- Functions can now be declared with multiple arities
- 'collectValues' and 'collectSymbols' are now class methods on Cons
- Removed Function's single arity constructor and replaced it with multi-arity factory method
- Variable-arity functions called without any optional arguments now have the vararg bound to nil, not to an empty vector