gc: More verbose debugging

Add more DEBUG_printf statements to trace gc behaviour
gc: Keep debug statements at beginning of scope where possible
gc: Turn off debugging info again
Add missing “assert.h” file header inclusion from “nlr.h”
Prefix ARRAY_SIZE with micropython prefix MP_
Merge pull request #707 from eblot/master-v1.1.1-build-fixes

Fix missing declaration of assert()
Replace ARRAY_SIZE with MP_ARRAY_SIZE
Merge pull request #697 from stinos/gc-debug

gc: More verbose debugging
py: Separate MICROPY_PY_BUILTINS_COMPLEX from MICROPY_PY_BUILTINS_FLOAT.

One thing is wanting to do 1 / 2 and get something else but 0, and quite
another - doing rocket science ;-).
tests/float/: Skip tests if "math" module is not available.
unix: Allow to override compiler warning options without touching the rest.

Some people want to enable even more warnings. Let them do it without putting
burden on everyone. Some people vice versa think that current settings should
be relaxed. In this regard, -Werror is the most problematic, it disallows to
use #warning directive, and disallows to pass configuration settings on make
command lines. Again, until decided how to deal with these globally, allow to
work around these problems locally.
unix: Group CFLAGS related stuff together.
unix: Refactor order file munging fo MacOSX.
unix: Add CFLAGS_EXTRA & LDFLAGS_EXTRA for command line usage.

The idea is that it should be possible to pass any additional params for
experimentation without need to patch sources (and without need to deviate
from or repeat baseline options).
unix: Allow to override MICROPY_GCREGS_SETJMP from cmdline.
makefile: Pass STRIPFLAGS_EXTRA to strip.

Expected to be set on command line, with the idea being that for different
targets, there're different smartass ABIs which strive to put unneeded
sections into executables, etc., so let people have flexible way to
strip that.

The option name is similar to previously introduced CLFAGS_EXTRA &
LDFLAGS_EXTRA.
mkrules.mk: Pass $(COPT) to link stage.

In generalize case, optimization options should be passed to all stages of
the build process.
py: Include mpconfig.h before all other includes.

It defines types used by all other headers.

Fixes #691.
py: Support arm and thumb ARM ISAs, in addition to thumb2.

These changes were tested with QEMU, and by few people of real hardware.