Proper Tail Call Implimentation

The goal of these changes is to impliment proper tail recursion, that is
that a function whose return value is the result of a function call does
not grow the call stack.

In sapphire this is accomplished by a rather bastardized version of
continuation passing style.  In our case continuations are a datastructure
(found in Continuation.hs) that holds a (TMVar Value).  This is the
equivelent of the return site in traditionla CPS.

In order for this to actually be effective, we needed to change function
application from a function takeing a list of values and returning a
Monadic value result to a function taking a list of values that has re
effect (monadic action) of placing a value in the replier TMVar in the
current context.

In point of fact most of `eval` is simple translation from Exp to Value.
There are also occasions when we need an actual value to be returned.  for
these reasons, eval was not replaced, but suplimented wiht the evalT
function which can be called whenever it is appropriate to reply with the
resulting value rather then retuning it to the calling function.  The
default implimentation of this function is to call eval and place the
resulting into the replier of context.  For expressions such as apply and
call where proper tail calls are in order evalT reimpliments them.

This change in function type had a number of knock-on effects.  All the
function in BuiltinFunctions.hs needed to be transformed to the new style.
Context neded to have some addational functions added to allow for the
implimentation, and the responder in Spawn.hs needed to bae changed.  In
may placed this allowed functions to be simplified.

As part of thie restructuring, Eval.hs was cleaned up significantly.