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.
tests: Add test for semantics of for-loop that optimisation can break.
tests: Activate recursive_data.py test, now that io.StringIO is available.
run-tests: PEP8 fix.
run-tests: Reset MICROPYPATH, to make sure tests use only builtin modules.
py: Fix label printing in showbc; print sp in vm trace.
py: Fix optimised for-loop compiler so it follows proper semantics.

You can now assign to the range end variable and the for-loop still
works correctly.  This fully addresses issue #565.

Also fixed a bug with the stack not being fully popped when breaking out
of an optimised for-loop (and it's actually impossible to write a test
for this case!).
run-tests: Skip native/viper tests based on prefix.

Otherwise, new tests are forgotten to be added to explicit lists. Issue
found running on Debian/ARM.