modmicropython: Move mem_info() and qstr_info() functions from unix port.

TODO: Merge useful functionality from modpyb too.
docs: Sort "micro-library" module list alphabetically.
docs: Add quick docs for uhashlib.
docs: Add quick docs for ubinascii.
docs: Add links to LCD and AMP skin schematics.
stmhal: Move RTC HAL init functions to rtc.c, where they belong.

So can remove unnecessary stm32f4xx_hal_msp.c file.
py, vm: Make unum a local variable for each opcode that uses it.

This makes no change to the generated code, but it's now easier to
understand since unum is not a "global" variable anymore.
docs: Add skeleton docs for ure module.
py: Allow bytes/bytearray/array to be init'd by buffer protocol objects.

Behaviour of array initialisation is subtly different for bytes,
bytearray and array.array when argument has buffer protocol.  This patch
gets us CPython conformant (except we allow initialisation of
array.array by buffer with length not a multiple of typecode).
drivers, wiznet5k: Add socket_reset; fix orderly shutdown in recv.
stmhal: Overhaul network drivers; has generic network protocol in C.

This patch overhauls the network driver interface.  A generic NIC must
provide a set of C-level functions to implement low-level socket control
(eg socket, bind, connect, send, recv).  Doing this, the network and
usocket modules can then use such a NIC to implement proper socket
control at the Python level.

This patch also updates the CC3K and WIZNET5K drivers to conform to the
new interface, and fixes some bugs in the drivers.  They now work
reasonably well.
docs: Update network docs to reflect changes to code.
docs: Add quick docs for uzlib.
docs: uzlib: Typo fix.
py: Optimise lexer by exposing lexer type.

mp_lexer_t type is exposed, mp_token_t type is removed, and simple lexer
functions (like checking current token kind) are now inlined.

This saves 784 bytes ROM on 32-bit unix, 348 bytes on stmhal, and 460
bytes on bare-arm.  It also saves a tiny bit of RAM since mp_lexer_t
is a bit smaller.  Also will run a bit more efficiently.
unix-cpy: Fix build due to change in lexer API.
py: Fix printing of size_t entity; fix qemu-arm for changes to lexer.
py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack.

mp_obj_int_get_truncated is used as a "fast path" int accessor that
doesn't check for overflow and returns the int truncated to the machine
word size, ie mp_int_t.

Use mp_obj_int_get_truncated to fix struct.pack when packing maximum word
sized values.

Addresses issues #779 and #998.
esp8266/README: Fix typos.
stmhal: Make SPI bus use DMA for transfers.

Uses DMA if interrupts are enabled, polling if they are disabled.