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: Improvements to native emitter.

Native emitter can now compile try/except blocks using nlr_push/nlr_pop.
It probably only works for 1 level of exception handling.  It doesn't
work on Thumb (only x64).

Native emitter can also handle some additional op codes.

With this patch, 198 tests now pass using "-X emit=native" option to
micropython.
Merge pull request #710 from iabdalkader/assert

Fix assert_func warning/error
modffi: Add special 'C' code for passing a callback function pointer.
modsstruct: Foreign data interface module, roughly based on ctype ideas.

But much smaller and memory-efficient. Uses Python builtin data structures
(dict, tuple, int) to describe structure layout.

Currently, the only available docs are testcases.
modsstruct: sizeof(): Fix handling of recursive structs.
modsstruct: sizeof(): Operate on sstruct objects too (not just on layouts).
modsstruct: Replace some asserts with exceptions.
modsstruct: Implement sizeof() for PTR and ARRAY.
modsstruct: More docstrings for gendoc.py.
modsstruct: 64-bit cleanness.
modsstruct: Add VOID type value, for void pointers.

Actually implemented as an alias for UINT8 for now.