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.
showbc: Make code object start pointer semi-public.

This allows to pring either absolute addresses or relative offsets in jumps
and code references.
showbc: Print operation mnemonic in BINARY_OP.
py: Add MP_LIKELY(), MP_UNLIKELY() macros to help branch prediction.