tests: Add option to run-tests to enable native emitter.
py: Add compiler optimisation for conditions in parenthesis.

Optimises:
    if () -> if False
    if (x,...) -> if True
    if (a and b) -> if a and b
py: Fix 2 bugs in native emitter: jump_or_pop and stack settling.

Addresses issue #838.
py: Use memmove instead of memcpy when appropriate.

Found this bug by running unix/ tests with DEBUG=1 enabled when
compiling.
lib: Add lib and libm, moving current files from stmhal.

Top-level lib directory is for standard C libraries that we want to
provide our own versions of (for efficiency and stand-alone reasons).
It currently has libm in it for math functions.

Also add atanf and atan2f, which addresses issue #837.
lib, libm: Add back dummy definition of tanf.
Change some parts of the core API to use mp_uint_t instead of uint/int.

Addressing issue #50, still some way to go yet.
py: Save about 200 bytes of ROM by using smaller type for static table.
py: Make map, dict, set use mp_int_t/mp_uint_t exclusively.

Part of code cleanup, towards resolving issue #50.
py: Make tuple and list use mp_int_t/mp_uint_t.

Part of code cleanup, to resolve issue #50.
py: Change all uint to mp_uint_t in obj.h.

Part of code cleanup, working towards resolving issue #50.
py: Remove use of int type in obj.h.

Part of code cleanup, working towards resolving issue #50.
py: Change uint to mp_uint_t in runtime.h, stackctrl.h, binary.h.

Part of code cleanup, working towards resolving issue #50.
py: Small simplifications in tuple and list accessors.