py: Implement +, += and .extend for bytearray and array objs.

Addresses issue #994.
Update documentation for the CAN class
py: Generalise and reduce code size of array +, += and .extend().

By using the buffer protocol for these array operations, we now allow
addition of memoryview objects, and objects with "incompatible"
typecodes (in this case it just adds bytes naively).  This is an
extension to CPython which seems sensible.  It also reduces the code
size.
stmhal: Make pyb.[u]delay use systick with IRQs, busy loop otherwise.

pyb.delay and pyb.udelay now use systick if IRQs are enabled, otherwise
they use a busy loop.  Thus they work correctly when IRQs are disabled.
The busy loop is computed from the current CPU frequency, so works no
matter the CPU frequency.
tools: Make pyboard.py have infinite timeout when running script.

This makes pyboard.py much more useful for long running scripts.  When
running a script via pyboard.py, it now waits until the script finishes,
with no timeout.  CTRL-C can be used to break out of the waiting if
needed.
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.