Add input command for unix
Merge pull request #582 from dhylands/unix-input

Add input command for unix
unix: Add missing stdio.h header for readline.
py, compiler: Start adding support for compile-time constants.

Just a start, no working code yet.  As per issue #573.
py, compiler: Improve passes; add an extra pass for native emitter.
py: Improve native emitter; now supports more opcodes.
tests: Add inline assembler test for pyboard.
tests: Add a test for native code on pyboard.
py: Fix emitcpy, to work with latest changes to PASS variables.
windows: Fix input.c missing in Makefile after changes for #582
tests/bench: Time namedtuple field access.

That's higher than instance field access - behold the power of hashing.
tests/bench: Add testcases for lookup in 5-el instance and namedtuple.

... and we have not that bad mapping type after all - lookup time is ~ the
same as in one-attr instance. My namedtuple implementation on the other
hand degrades awfully.

So, need to rework it. First observation is that named tuple fields are
accessed as attributes, so all names are interned at the program start.
Then, really should store field array as qstr[], and do quick 32/64 bit
scan thru it.
tests/bench: Add variation on loop_count/while_down_ne test.
tests/bench: Add tests for various ways to pass function args.

Passing 3 args with keywords is for example 50% slower than via positional
args.
tests/bench: Add testcase for positional/kwargs to enumerate().

Inspired by discussion in #577. So, in this case of builtin function,
passing args by keyword has less than 1% overhead.
Merge pull request #584 from stinos/windows-input

windows: Fix input.c missing in Makefile after changes for #582
py: Fix stack access in thumb native emitter.
tools: check-in errordeveloper/tinytest@eb2dbc858f6c3785468a96e98f2b944f10013163
tools: inline test suite generator.
qemu-arm: fully integrated test suite.

This is primarily intended to provide testing of Thumb-specific code within
Travis CI as well as if anyone else want to run it locally.  As discussed in
purposes.  This is currently agains an emulated Cortex-M3 core, however in
the near future it can extended to support M0, M0+ as well M4 (work in
progress exists in sushihangover/qemu).

It's probably true that most of the code base can be covered running uPy
natively on a POSIX system, however we do have the tiny bit of assembly
code.  There may exist bugs related to endianness and type aliases, let
alone potential standard library or compiler bugs or even
architecture-specific optimisations.

This could also incorporate lwIP (or other TCP/IP stack) integration as well
as SDIO+FATFS drivers.

The solution to inline the test cases was chose due to simplicity. It could
alternatively be implemented in a number of different way (see #515), but
this looked the simplest.

Inclusion of tinytest was just to avoid writing boilerplate code for
counting failed tests and other utility functions.  Currently only a few
functions are used, however this could be extended.  Checking in the code
instead of using submodule was a personal preference, but if people do want
the pain of submodules, this can provided.  This particular framework is
also pretty good if one desires to run unit test on target.  The approach
with scripts being inlined is probably not quite suited for the size of
memory an MCU has, but the tinytest itself should be good, if lower-level C
code is to be unit tested.