Basic native ARM emitter
Clarify copyright on asmarm files
py: Reduce fragmentation of GC heap.

Recent speed up of GC allocation made the GC have a fragmented heap.
This patch restores "original fragmentation behaviour" whilst still
retaining relatively fast allocation.  This patch works because there is
always going to be a single block allocated now and then, which advances
the gc_last_free_atb_index pointer often enough so that the whole heap
doesn't need scanning.

Should address issue #836.
py, gc: Further reduce heap fragmentation with new, faster gc alloc.

The heap allocation is now exactly as it was before the "faster gc
alloc" patch, but it's still nearly as fast.  It is fixed by being
careful to always update the "last free block" pointer whenever the heap
changes (eg free or realloc).

Tested on all tests by enabling EXTENSIVE_HEAP_PROFILING in py/gc.c:
old and new allocator have exactly the same behaviour, just the new one
is much faster.
Merge pull request #833 from Vogtinator/arm-native

Basic native ARM emitter
py: Move native glue code from runtime.c to new file nativeglue.c.

This way, the native glue code is only compiled if native code is
enabled (which makes complete sense; thanks to Paul Sokolovsky for
the idea).

Should fix issue #834.
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.