[TODO]
  Things which are known about in this version which should be fixed (or just implemented!):  

  HIGH PRIORITY:
        Detect if running out of FIFO space and skip writing characters
        Add Math functions
        Make save() retry writing to flash if there was an error
        Use R13/ESP to read stack size and check it against a known max size - stop stack overflows: http://stackoverflow.com/questions/2114163/reading-a-register-value-into-a-c-variable

  MEDIUM PRIORITY:
	When printing lines, backspace and add '>' prompt after print (only if echo=1)
        Add Array.splice
        Lex could use JsVars in order to store potentially very big strings that it parses
        On assert fail, should restart interpreter and try and recover
        Instead of using execInfo.lex->tokenStart, loops store index + ref to stringext -> superfast!
        Handle multi-line editing/delete using arrow keys (once done, add edit(functionName) - which copies function definition into inputline so it can be updated)

 
  LOW PRIORITY
        analogWrite should check about ports with overlapping timers
        Built-in constants for LED1/BTN/etc.
        Automatically convert IDs in form A#,A##,B#,B## etc into numbers.
        Allow Serial comms via other UARTS
        Handle '0' in strings - switch to storing string length in flags
        When 0 handled in strings, implement ArrayBuffer/Int32Array/Int16Array/Int8Array/etc using strings - https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays
        Handle serial port like node.js SerialPort? Or Arduino :/
        Group builtin functions alphabetically and do quick check on first character
        Add 'delete' keyword for killing array items?
        Could get JsVar down to 20 bytes (4*N) so we can align it on a boundary. String equals can then compare whole 32 bit words
        Memory leaks when errors - test cases? Maybe just do leak check after an error has occurred
        Memory leak cleanup code - to try and clean up if memory has been leaked
        'if ("key" in obj)' syntax
        function.call(scope)
        handle 'new Function() { X.call(this); Y.call(this); }' correctly
        'Array.prototype.clear = function () { this.X = 23; };'
        Could store vars in arrays/objects/functions as a binary tree instead of a linked list
        Maybe keep track of whether JsVar was changed/written to? jsvLockWritable
        Memory manager to handle storing rarely used refs in flash
           - use binary tree to look up JsVar from its ref
           - maybe also linked list to keep track of what is used most often
        Add require(filename) function (need fileIO first!)
        Currently, accessing an undefined array or object item creates it. Maybe that could be changed?
        Can the max number of scopes ever be >2(3)? (Root)Function Caller,Function Called? What about 'this'?
[/TODO]

