Attempt to improve the output of multi-line results

repeat 3 [print utimer] had only the first line offsetted. Now, any multi-
line output will be printed offsetted.
Minor simplification of compile output. Removal of debugging leftovers.
Avoid re-opening the port for each command

Also, send the stop command before launching the next command or writing
the result of the compilation.
Avoid blocking user input while reading device output

Having a background thread that just queues everything, read from the mbed,
and echos printable characters allows to keep user input queue alive, which
allows interrupting long-running processes by sending the stop command.
Allow more time when reading and writing flash [in line with javalogo]
Combine stop command and clear com into stop_everything
Start communicating with mbed immediately upon startup

This is useful to pick an output from running mbed.
Add support to dump memory regions, similar to javalogo's dump

This is the first time when Reader.echo became really useful.
fixup! Combine stop command and clear com into stop_everything

Actually, I can't use bytes_available because the Reader may have already
fetched the byte, so, need to stick with emptying the queue.
fixup! Avoid blocking user input while reading device output

That was almost embarassing off-by-one mistake in determining printable char.
Prevent immediate exit if there is no mbed on startup
Improve compilation errors by including the procedure name in the message
Add forgotten command check for simple types

Normally, an attempt to execute 12 would cause 'you don't say what to do
with 12', but for this to work the state.command needs to be checked for
numbers, lists, strings, and dotted symbols
Add support for waituntil
Fix a bug where the fcn, created with define, could not use its arguments

Make and thing expect dsym, but popped list contained just symbols.
Fix definition of free (it actually does take one argument)
Explicitly raise an error upon attempt to use floats - they're unsupported
Fix a bug in let where using lists or numbers as variable names was allowed
Relax the requirement to use a list when defining a constant

constants required the value to be a list if it was an expression, i.e.
constants [[a [1 + 2 + 3]]]

Now, the expression can just follow the name, i.e. constants [[a 1 + 2 + 3]]
For the compatibility with javalogo version, lists are accepted as well.

Also, fixes the exception, caused by the lack of state.name during pass1.
fixup! Fix a bug in let where using lists or numbers as variable names

This fixes the make. The problem existed because handle_make is used by
both let, where x has to be ts.symbol, and make, where x has to be ts.qsym.
The fix doesn't distinguish between two cases, hence allowing

let ["bar 13]
make bar 12