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.
windows: Enable GC and implement bss start and end symbols

The pointers to the bss section are acquired in init.c()
by inspecting the PE header. Works for msvc and mingw.
gc: Use simple cast instead of union to silence compiler