py: Reduce size of VM exception stack element by 1 machine word.

This optimisation reduces the VM exception stack element (mp_exc_stack_t)
by 1 word, by using bit 1 of a pointer to store whether the opcode was a
FINALLY or WITH opcode.  This optimisation was pending, waiting for
maturity of the exception handling code, which has now proven itself.

Saves 1 machine word RAM for each exception (4->3 words per exception).
Increases stmhal code by 4 bytes, and decreases unix x64 code by 32
bytes.
docs: Make admonition for CPy-difference use "attention" class.

This renders it in yellow/orange box on RTD server.
unix, windows: Add _os.system() call.

system() is the basic function to support automation of tasks, so have it
available builtin, for example, for bootstrapping rest of micropython
environment.
docs: Add mention about using USB charger when resetting the filesystem.

It seems the Mac will happily wipe out at least some of the data on
a freshly reset filesytem, if the filesystem was reset while plugged
into the Mac.
stmhal: Enable ubinascii module, weak link to binascii.
tests: Add run-tests-exp.py, simple MicroPython-based test runner.

This script is rewrite of run-tests-exp.sh, and tries to achieve self-hosted
testsuite running in environments where neither CPython nor unix shell is
available. As run-tests-exp.sh, it requires complete set of .exp files
pre-generated with ./run-test --write-exp.
py: Make bytes objs work with more str methods; add tests.
showbc: Refactor to allow inline instruction printing.
py: Move to guarded includes for compile.h and related headers.
Makefiles: Support py/*.h includes per #1022.
py: Allow to properly disable builtin "set" object.

This patch makes MICROPY_PY_BUILTINS_SET compile-time option fully
disable the builtin set object (when set to 0).  This includes removing
set constructor/comprehension from the grammar, the compiler and the
emitters.  Now, enabling set costs 8168 bytes on unix x64, and 3576
bytes on stmhal.
py: Allow to properly disable builtin slice operation.

This patch makes the MICROPY_PY_BUILTINS_SLICE compile-time option
fully disable the builtin slice operation (when set to 0).  This
includes removing the slice sytanx from the grammar.  Now, enabling
slice costs 4228 bytes on unix x64, and 1816 bytes on stmhal.
lib/fatfs: Upgrade to new FatFs driver, put in lib/ for common use.

Patches to fatfs for our use will follow.
lib/fatfs: Support our volume names; make some funcs static.
stmhal: Upgrade to latest fatfs driver.
lib/fatfs: Allow a smaller minimum sector count for fatfs to be created.
stmhal: Add ability to mount custom block device.
drivers: Add SD card driver, controlled via SPI bus.
vm: Record exception ip only for instructions where exceptions may happen.

Mirroring ip to a volatile memory variable for each opcode is an expensive
operation. For quite a lot of often executed opcodes like stack manipulation
or jumps, exceptions cannot actually happen. So, record ip only for opcode
where that's possible.
run-tests-exp.sh: Typo fix in comment.