ssa_convert emits (ssa-kill) at end of var life

These directives are intended to make the end of a variable life clear
for the register allocator.
Allow --test to take an optional test filename arg

lisp --test mytest.lisp will now run mytest.lisp as the source file for
testing. If no argument is give after --test, then stdin is used.
Eval generates x86 code for (ssa int) & (call ...)

This is the first step in moving toward JIT evaluation of lisp
espressions and eventually executable complitation. However, the machine
code generated in inefficient. Some of this is due to limitations of
gnulightning, arising from it's platform agnostic API. Other aspects can
be fixed with a smarter code generator.

At this point we also need to add more functionality to the code
generator, namely accepting more values than just ints, and implementing
a symbol table.
Build lisp against dynamic libraries

Previously we build the executable statically, but it didn't work
correctly with dlsyn.
Start ssa registers from 1, not 0

This register allocation a little nicer in eval.c
Add extra assertion to help bash down a bug
Fix up tests for ssa registers staring from 1
Add ffi builtin function

This builtin should allow the user to call any C function from a shared
library. Currently it hard links to libc.