py: Speed up GC allocation.

This simple patch gives a very significant speed up for memory allocation
with the GC.

Eg, on PYBv1.0:
tests/basics/dict_del.py: 3.55 seconds -> 1.19 seconds
tests/misc/rge_sm.py:     15.3 seconds -> 2.48 seconds
py: Small cleanup in stream.c.
py: Change hash and len members of str from 16 bit to full word.

This allows to make strings longer than 64k.  It doesn't use any more
RAM with current GC because a str object still fits in a GC block.
extmod, zlibd: Make some simple ROM and RAM savings.

ROM down by 320 bytes on stmhal.  RAM down by 5.5k for a decompression
object.
modtermios: Add "termios" unix module, subset of CPython's.

Also provides setraw() function from "tty" module (which in CPython is
implemented in Python). The idea here is that 95% of "termios" module usage
is to set raw mode to allow access to normal serial devices. Then, instead
of exporting gazillion termios symbols, it's better to implement it in C,
and export minimal number of symbols (mostly baud rates and drain values).
unix, modtermios: Make it properly configurable; fix spelling mistake.
py: Fix bug where GC collected native/viper/asm function data.

Because (for Thumb) a function pointer has the LSB set, pointers to
dynamic functions in RAM (eg native, viper or asm functions) were not
being traced by the GC.  This patch is a comprehensive fix for this.

Addresses issue #820.
Add time.mktime and enhance time.localtime (for stmhal)

Now you can use time.localtime on the timestamps presented by os.stat
stmhal, modtime: Small changes, reduced code size by around 80 bytes.

Also added test for modtime.
Merge branch 'dhylands-localtime'
Added python script to map AF to a pin name

Added some functions to Pin class to query mode, pull, and af
stmhal, pin: Update documentation.
examples: Added pins.py example script to list pin config/af.

Script is due to Dave Hylands.
py: Consolidate min/max functions into one, and add key= argument.

Addresses issue #811.
Add save/restore_irq

Factored irq functions into a separate file.
stmhal: Make enable_irq and disable_irq inline functions.

These functions are generally 1 machine instruction, and are used in
critical code, so makes sense to have them inline.

Also leave these functions uninverted (ie 0 means enable, 1 means
disable) and provide macro constants if you really need to distinguish
the states.  This makes for smaller code as well (combined with
inlining).

Applied to teensy port as well.
Add save/restore_irq

Factored irq functions into a separate file.
Add support for pyb.micros() by using the systick timer.

I also removed trailing spaces from modpyb.c which affected a couple
of lines technically not part of this patch.

Tested using: https://github.com/dhylands/upy-examples/blob/master/micros_test.py

which eventually fails due to wraparound issues (I could fix the test to compensate
but didn't bother)
stmhal: Use MP_OBJ_NEW_SMALL_INT directly in pyb.micros/millis.

Also some whitespace cleanup.
teensy: Fix multiple definition of irq functions.