vm: WITH_CLEANUP: use POP_EXC_BLOCK().
vm: Save current active exception on opening new try block.

Required to reraise correct exceptions in except block, regardless if more
try blocks with active exceptions happen in the same except block.

P.S. This "automagic reraise" appears to be quite wasteful feature of Python
- we need to save pending exception just in case it *might* be reraised.
Instead, programmer could explcitly capture exception to a variable using
"except ... as var", and reraise that. So, consider disabling argless raise
support as an optimization.
stmhal: Implement selector for USB device mode; improve boot up.

Can now choose at boot up whether the USB device is CDC+MSC or CDC+HID.
Choice is made by an option in boot.py, with default being CDC+MSC.
HID+MSC is not currently supported, but should be easy to implement.

Boot up now has ability to change the reset mode: hold down USR switch
while booting and LEDs will count from 1 to 7 to indicate the boot mode.
Release USR when correct mode is selected.  Current modes are 1 (normal
boot), 2 (safe mode), 3 (reset FS mode).
Merge branch 'master' of github.com:micropython/micropython
Merge pull request #390 from pfalcon/reraise-recursive

vm: Save current active exception on opening new try block.
Add "tracing" to try-reraise2.py test.  It now fails.
py: Fix reraise logic.
py: Rename mp_exc_stack to mp_exc_stack_t.
mp_obj_print_exception(): Assert that traceback has sane number of entries.
compile: Print error messages on unimplemented relative imports.
objgenerator: mp_obj_gen_resume() suitable only for generators.
objgenerator: Store proper code_info pointer.
objgenerator.throw(): Throwing GeneratorExit is equivalent to .close().

According to PEP380 and caught by CPython test_pep380.py .
objgenerator.throw: Instantiate if exception type passed, just as "raise".

Caught by CPython test_pep380.py.
objexcept: Fix another place missing proper args tuple initialization.
stmhal: Unify naming of HW config; make SD detect configurable.

All board config macros now begin with MICROPY_HW_.

Renamed PYBv10 to PYBV10, since macros should be all uppercase.

Made SDCARD_DETECT configurable in mpconfigport.h, so that the SD
detect pin can be easily configured.
Rename rt_* to mp_*.

Mostly just a global search and replace.  Except rt_is_true which
becomes mp_obj_is_true.

Still would like to tidy up some of the names, but this will do for now.
Merge map.h into obj.h.

Pretty much everyone needs to include map.h, since it's such an integral
part of the Micro Python object implementation.  Thus, the definitions
are now in obj.h instead.  map.h is removed.
showbc: Dump all CALL_FUNCTION_* and CALL_METHOD_* opcodes.
vm: Implement CALL_FUNCTION_VAR opcode (foo(*(1, 2, 3))).