Adding support for splats/rest params/variable length arguments

This isn't finished yet but is mostly there. I hope to finish this today or tomorrow.

Regarding syntax:

Right now I'm using `$a` to represent a rest param but if we were using the ES6 esprima I think we could use the actual ES6 `...a` (untested) which I think its slightly cleaner and avoids making up our own syntax. Any thoughts on using an experimental esprima version? I could also try to use the "tolerant" parsing in esprima to ignore the `...` but this is also untested.