stmhal: Allow network, uselect, usocket mods to be used by other ports.

Remove include of stm32f4xx_hal.h, replace by include of MICROPY_HAL_H
where needed, and make it compile without float support.  This makes
these 3 modules much more generic and usable by other ports.
modsys: Add sys.print_exception(exc, file=sys.stdout) function.

The function is modeled after traceback.print_exception(), but unbloated,
and put into existing module to save overhead on adding another module.
Compliant traceback.print_exception() is intended to be implemented in
micropython-lib in terms of sys.print_exception().

This change required refactoring mp_obj_print_exception() to take pfenv_t
interface arguments.

Addresses #751.
stmhal: Enhance pyb.freq to configure bus (AHB, APB1, APB2) freqs.

This is useful if you need precise control over the speed of
peripherals (eg SPI clock).
stmhal: Allow SPI.init to specify prescaler directly; improve SPI docs.
drivers, nrf24: Add nonblocking send option etc.
drivers, nrf24: Nonblocking send now done by generator.
drivers, nrf24: Nonblocking send now uses send_start and send_done.
py: Allow builtins to be overridden.

This patch adds a configuration option (MICROPY_CAN_OVERRIDE_BUILTINS)
which, when enabled, allows to override all names within the builtins
module.  A builtins override dict is created the first time the user
assigns to a name in the builtins model, and then that dict is searched
first on subsequent lookups.  Note that this implementation doesn't
allow deleting of names.

This patch also does some refactoring of builtins code, creating the
modbuiltins.c file.

Addresses issue #959.
py: Fix function type: () -> (void).
docs: Add sys.print_exception().
tests: Add test for print_exception() function.
tests: Fix print_exception.py to work on Travis CI.
unix: add unlink function to os module
py: Make functions static where appropriate.
py: Remove static from definition of pfenv_printf.

It's used by stmhal, but not unix.
py: Tidy up a few function declarations.
run-tests: Skip print_exception.py on TravisCI, as it irreproducibly fails.

TODO: Figure out what's wrong on Travis.
tests: Fix print_exception test and re-enable it on Travis CI.

Issue was with uPy: on local machine with micropython-lib installed, io
module is available.  Not the case on Travis CI, where only _io module
is available in uPy.
tests: Disable print_exception test when using native emitter.
py: Fix a semantic issue with range optimisation.

Now you can assign to the range variable within the for loop and it will
still work.

Partially addresses issue #565.