     1v04 : Renamed to Espruino
            Fixed issue with event add when out of memory
            If out of memory happens during a timer, kill all timers
     1v05 : Allow setWatch/setTimeout/setInterval with a string
            Handle adding Open bracket then deleting it
            When calling a NAMED function, zero the scopes - this stops scope table overflow
     1v06 : Add break + continue
            Add switch statement
            Handle /r, /r/n or just /n for newlines - phone compatible                            
            Handle different type of delete
     1v07 : Fix string charAt
            Fix watch on different pin
            Pass arguments to event handlers - eg. time
            digitalWrite/Read to take arrays of pins, and int for value
     1v08 : Add preliminary STM32F4 support
            Allowed test cases to test timers - eg. code in jsinteractive.c
            Fix memory leak for timer
            Fix memory leak for digitalWrite
     1v09 : Enabled 'abs' by default
            Added flash programming to STM32F4
            analogWrite now working!
     1v10 : Increase FIFO size for VL
            Marginally decrease amount of F4 vars to ensure they all fit in one flash sector
            Allow strings to be longer than the max token size
            '"key" in obj' syntax
            Detect if in FOR or WHILE loop, and if not, disallow break and continue
            Change min setInterval time to 0.1ms - F4 can get close to this
            Better analog pin error message
            USB support on Olimexino/Maple
            Start of multiple COM port support (ioEvent queue)
            Ctrl-C now clears the input line
            Save state of 'echo' into flash with save()
            Add 'setBusyIndicator(pin)' to set pin high when Espruino is busy
            Inbuilt function handling speed improvements
            Allow Serial comms via other UARTS. Serial1/2.onData and print/println
            now inserts elements into arrays in the correct order (GetLength can be (is) now much faster)
            Faster code to work out pins from strings
            Automatically convert IDs in form A#,A##,B#,B## etc into numbers.
            Built-in constants for LED1/BTN/etc.
     1v11 : Add Math functions
            Add command history (and dynamic history free if low memory)
            Fix broken jsvArrayPop
            Add tests for and fix Array.indexOf
            In-line editing for commands
            Fix bug in basicVarEquals for big strings
            More fixes for low memory conditions
            Multi-line edit for commands (but no newline or line delete yet)
            Handle Home, End + reverse delete keys
            Fix nested for loops not handling interrupts correctly
            Fix AppendString issue when given start value greater than string
            Add 'changeInterval' to allow things created with setInterval to have the frequency changed (eg. stepper motor control)
            Now puts itself to sleep to save power, when it knows nothing is required and it'll be woken up by SysTick before
            Change Math library to avoid putting constants in RAM
     1v12 : Issue when printing lots of data and then disconnect USB
            Hide USB/Serial in Dump()
            add Array.map(fn(x), thisArg)
            For newline, count [] and () (as well as {}) - also knows about comments/strings/etc
            Fix assert fail is setTimeout with non-function
            If space at end of input line, enter still executes
            Removed some hard-coded arrays in favour of JsVar strings
            Fix confusion with jsvIsName/jsvIsString
            Handle numpad end key
            Add code to check stack and stop stack overflow if too much recursion
            Ensure that setTimeout/setWatch store the link to a function, not the function
            Fix nasty ref loop in ref loop GC issue
            Add dotty output
            Fix memory leak when error in jspParseSingleFunction
            Now run Garbage collection if we're idle, and we know we have a few ms spare
            Added setSleepIndicator
            Fix line/col indicator in errors/warnings
            Fix JSON parsing and printing when 'undefined' encountered
            Rewritten object handling code to be way more standard JavaScript compliant
            Array initialisation with 'new Array()', also for Strings
            Added a few more built in functions
            Nice error reporting with line + pointer
            fixed Math.random
            Binary style ops on doubles now work - they are just converted to ints
            Added boolean datatype
     1v13 : Operations like + on Object/Array convert them to strings rather than error
            var now doesn't error if there is no semi-colon
            Allow new line or line delete in multi-line editing
            add edit(functionName) - which copies function definition into inputline so it can be updated
            When printing lines, delete current inputline and then put it back in idle loop (only if echo=1)
            Support *,/ etc on numpad
     1v14 : Fix complaint about pins during setBusyIndicator()
            Increase available memory on OLIMEXINO
            Added function memory() to return memory usage
            setWatch now links to function names (rather than just functions)
            dump() also handles Serial.onData(...)
            Fix issue with JSON printing functions with arguments to console
            prefix builtin variables with '_'
            fix ArrayIndexOf when array contains undefineds
            move all devices into one git repository
            USB on F4
            call onInit function/string if it exists when Espruino powers on
            Compile F4 with -O2 - as we have the program memory for it
            Serial3/4/5/6 on F4
            Serial3 on Olimexino
            Make Serial.onData() clear onData handler
     1v15 : Escaping JSON strings
            Fix parsing of octal numbers in strings (so don't have to be 3 chars long)
            Drastically improved stack usage using small stub functions (at expense of a bit of speed)
            dump() also dumps out prototypes for functions
     1v16 : Inlining of jsvLock/UnLock in jsvar.h to improve speed
            Move non-hardware-dependent stuff into jsdevices
            Move jshardware.c into targets/stm32/jshardware.c, create 'targets/linux' and use a single makefile
            For + While loops work without reallocating lex 
            Fix AddNativeFunction when function already exists (and tests + saved state)
            Change jsvFindChildFromX to use JsVar* from JsVarRef - saves a lot of lock/unlock
            Handle new Foo() as per spec (return value + init of this+prototype) - still does not cope with non-object prototype
            Beginning of SD card support (works on Olimexino, but not very flexible)
            Fix for parse/eval when given non-strings
            Strings can now contain '\0'
            Jumptable-friendly reserved word check
            Jumptable-friendly builtin functions (massive refactor)
            SPI support
            HY board support, and graphics LCD
            Added fillPoly, and Vector fonts
            Added Registration code
            Fixed some undefined function/array warnings
            Much better HTML function documentation
            Fixed edit() function
            STM32F3 support, and now peripheral stuff is done with a script
            explain what pins are available if a pin is not capable of requested fn
            power on ADCs only when needed
            LCD fillPoly speed improvements, + drawLine
            Add datatype for Pin, so pins written to console by pin name rather than integer value.
            Added Pin.set/Pin.reset
            Change warning about 'undefined.' into an error (foo.reset() had unexpected consequences!)
            Fix parsing of '1.0/-3'!
            Add typeof and instanceof operators
            Ensure that Serial1/SPI1/etc are objects of type 'Serial'/'SPI' - so prototypes can be added
     1v17 : Support for running alongside the Maple bootloader
            Fix parsing of numbers beginning with 0 when forceRadix!=8
            Fixed USART1 on Maple/Olimexino devices
     1v18 : DAC support on F3/F4
            Serial.setup() can also take a second parameter of an object {tx,rx}
            Better support for dump() with echo/setBusyIndicator/etc
            Better dumping of prototypes on built-in vars
            Don't add chars<32 (Except tab) to the input line
            SPI1/2/3/4.setup() to take an object {baud,sck,miso,mosi}
            Better hardware initialisation code (not UARTS auto-init if they are used)
            Fix issues with prototypes
            Peek/poke instructions
            Start of I2C support
            Added Math. ceil/floor/exp/log
     1v19 : Fixed issue where var M=Math;M.random() failed
            Fixed issue with var U=USB;U.print("Hello");
            Remove loop iteration limit
            Fix memory leak when a syntax error is in for '(i in arr)'
            Save state of pin on setWatch interrupt (e.state)
            Change setWatch to allow only on rise or fall as an option
            clearWatch() clears all watches
