Added skeleton of fn type

A fn is the representation of a function. Scope is managed via
tables rather than on the stack. This requires the overhead
of the heap during function calls. This may be a very big penalty,
but it has quite a few nice features such as a trivial closure
implementation, simplified C interface, and keyword arguments.
Actual runtime cost will be evaluated later, but for now if makes
a very nice framework.

Additionally a "keyword" args was created, which represents the table
of arguments during a function call. Since normal execution is a
function call, this will always be defined.