Contributed changes from acertainsomeone:
Contributed changes from acertainsomeone:

* added 'call' method that is similar to 'eval' except:
** 'call' accepts an arbitrary amount of arguments that are automatically quoted and executed as a Tcl statement.
** 'call' accepts arrays (will be converted to lists) and simple key-value-mapping objects (will be converted to dicts) as arguments.
** 'call' converts return values: lists become arrays, dicts become objects, and numbers are returned as numbers not as strings.

* modified 'proc' to have improved datatype handling (fixes issue #2):
** 'proc' accepts arrays (will be converted to lists) and simple key-value-mapping objects (will be converted to dicts) as arguments.
** 'proc' converts return values from custom procs: lists become arrays, dicts become objects, and numbers are returned as numbers not as strings.

* added getStacktrace() returns Tcl's stacktrace of the last error that occured

* added setTimeLimit(seconds) sets a time limit (in seconds) for all subsequent 'call' or 'eval' calls, a limit of 0 disables this

* added getTimeLimit() returns the current time limit setting

* added makeSafe() converts the interpreter into a safe interpreter

* added deleteProc(name) removes a proc from the interpreter (this can also be default procs, for example exit)

bovine/nodetcl,bovine/nodetcl,bovine/nodetcl