Convert uses of object->evaluate(env) to Evaluator::evaluate(object, env).

The later includes additional logic to handle excessively nested evaluation
and user interrupts.
Check for user interrupts on function calls and once per loop.

Previously the interpreter checked them on every evaluation and the JIT
compiled code failed to check them inside loops.
Delete the default copy constructor and assignment op for Evaluator::Context.
Refactor the stack checking code.

The stack checking code now all lives in a common location
(StackChecker.hpp / cpp) and uses scoped objects to automatically set the
stack depth etc.
On Win32, reinitialize the fpu on calling every builtin function, instead of
every evaluation.  Since only builtins, or native functions called from builtins
should be doing floating point arithmetic, this shouldn't cause any change in
behaviour.
Only increase the stack depth count for objects that may cause further
evaluations: expressions, promises and bytecode.