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.