add unrolled version of (apply) similar to applyTo in Clojure, this should allow JIT to work nicely
load apply.lua
compress nil arguments to constructor by just returning the other argument
use apply.lua's apply, fix (list) return value
massive rework of function arguments to work with apply

Wow, I totally misunderstood how all the function arguments and & rest
stuff was suppose to work.

So basically there can at most be 21 arguments in Lua, 20 max positional
in Lisp and maybe a 21st for rest.

CALL opcode needs to pack the 21+ arguments into a seq, and not rely on
previous behavior where it would pack the fn(...) into a table
programatically and pass every single argument. There can ONLY be max 21 arguments.

tsukuyomi.lang.Function needs to be completely reworked, as there was
sort of a bug which dealt with functions that have an arity of x and
then a rest arg @ x + 1. Then it has to correctly call when the func
body of arity x is missing and when it was there. The function for
having no rest args can't overwrite a previous real function body.

So my (list) fn was therefore wrong and needed a body of no args to
produce the empty list. Not sure what Clojure was doing, maybe directly
invoking the constructor.