Declare do_str() function before the implementation

This ensures that GCC does not discard the do_str implementation in
some cases eg when compiling tests with debug enabled:
  make RUN_TESTS=1 DEBUG=1
msvc: Exclude modtermios, include extmod and fix compilation error
Merge branch 'msvc-extmod' of github.com:stinos/micropython into stinos-msvc-extmod
extmod: Fix type-punned-ptr error.
Merge branch 'stinos-msvc-extmod'
Merge pull request #844 from chrisdearman/do_str

Declare do_str() function before the implementation
Add cache flush in py/asmarm.c and add new MP_PLAT_ALLOC_EXEC and MP_PLAT_FREE_EXEC macros

Fixes issue #840
Merge pull request #845 from Vogtinator/master

Add allocation macros (per platform) and ARM cache flush
unix: Auto-detect MICROPY_EMIT_X64 and MICROPY_GCREGS_SETJMP.

If not set, MICROPY_EMIT_X64 is set only if on x86-64 machine.

If not set, MICROPY_GCREGS_SETJMP is set when on MIPS.
Code style/whitespace cleanup; remove obsolete headers.

And move the MAP_ANON redefinition from py/asmx64.c to unix/alloc.c.
py: Use variable length encoded uints in more places in bytecode.

Code-info size, block name, source name, n_state and n_exc_stack now use
variable length encoded uints.  This saves 7-9 bytes per bytecode
function for most functions.
py: Use % str formatting instead of {} in makeqstrdata.py.

Script is equivalent, but now also runs under ancient Python 2.6.
Goes part way to addressing issue #847.
py: Convert (u)int to mp_(u)int_t in mpz, and remove unused function.
py: Make mpz able to use 16 bits per digit; and 32 on 64-bit arch.

Previously, mpz was restricted to using at most 15 bits in each digit,
where a digit was a uint16_t.

With this patch, mpz can use all 16 bits in the uint16_t (improvement
to mpn_div was required).  This gives small inprovements in speed and
RAM usage.  It also yields savings in ROM code size because all of the
digit masking operations become no-ops.

Also, mpz can now use a uint32_t as the digit type, and hence use 32
bits per digit.  This will give decent improvements in mpz speed on
64-bit machines.

Test for big integer division added.
py: Fix definition of sys.maxsize with mpz changes.
unix: Don't use -Wno-error=cpp or #warning; fix strict alias warning.

For the sake of older versions of gcc (and other compilers), don't use
the #warning CPP directive, nor the -Wno-error=cpp option.

Also, fix a strict alias warning in modffi.c for older compilers, and
add a test for ffi module.

Addresses issue #847.
py: Correctly set sys.maxsize value for 64-bit.

Type representing signed size doesn't have to be int, so use special value
which defaults to SSIZE_MAX, but as it's not defined by C standard (but rather
by POSIX), allow ports to set it.
modstruct: Implement 'O', 'P', 's' types for packed structs.

This is required to deal with, well, packed C structs containing pointers.
py: Native emitter now supports delete name & global, and end finally.
tests: Enable misc tests on pyboard; output 4 sig figs in rge_sm.