Initial commit of VM sources
(minor) be a better thread by letting others run while waiting

When Reader.read is waiting for available data, it's better to let other
threads, like Reader.run, to know that they can execute.
Improve the response time of an interactive command by not waiting too much

The main issue was that mbedlogo.read actually waits at least timeout
before return. In attempt to return as much data as possible, it waits an
extra timeout to be sure that no more data is coming in. It slows down the
response to an interactive command.

Now, if we know that we're expecting only one byte in return, we just call
the mbedlogo.reader.read directly.

On top of that, timeouts are reduced, but they still appear working.
Fix errorneous read in stop_everything - VM doesn't really reply to 0

And again, we can wait a bit shorter, which may be too optimistic for
long-running primitives.
Rename lsl primitive to lsh
Remove an argument from the random primitive

It's easier to implement random without an argument in ASM, thus to be more
consistent with VMs in ASM, we dropped the argument.
Add byte0, byte1, byte2, byte3, bset, bclr, btst, bsetb, bclrb, btstb
Remove cr primitive (use prs "\n). Add prf primitive.

prf takes the format string and a number. Supported formats %b (%02x),
%w (%08x), %d
Add millisecond timer primitives (resett, timer)

They use a second timer object, i.e. resett does NOT resetut
Add prhb primitive (equivalent to prf "%b\n)