Updated teensy to build.

Refactored some stmhal files which are shared with teensy.
Add MICROPY_HW_MICRO_NAME to boards config
Added hexfile target
Fix asser_func warning/error

* Add while(1) to assert_func to avoid func returns warning
* Define a weak attr in mpconfig.h
Add NORETURN to __fatal_error
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
unix: uClibc doesn't like NULL as a buffer arg to realpath().

So, allocate one explicitly.
modsocket: Add call to freeaddrinfo().
modsocket: Workaround uClibc issue with numeric port for getaddrinfo().

It sucks to workaround this on uPy side, but upgrading not upgradable
embedded systems sucks even more.
unix: Don't error out on #warning directive.
py: Implement delete_attr in native emitter.
unix: Dump default heap size in usage message.
modsocket: Fix uClibc detection.
Merge pull request #690 from stinos/msvc-gc

msvc: Enable GC
Merge branch 'master' of github.com:micropython/micropython
modgc: Add mem_free()/mem_alloc() methods.

Return free/allocated memory on GC heap.
unix: Remove unused CTRL-D definition
modstruct: Fix alignment handling issues.

Also, factor out mp_binary_get_int() function.