objgenerator: Implement return with value and .close() method.

Return with value gets converted to StopIteration(value). Implementation
keeps optimizing against creating of possibly unneeded exception objects,
so there're considerable refactoring to implement these features.
vm: Implement raise statement w/o args (reraising last exception).
objexcept: Add mp_obj_exception_get_value() convenience function.

This gets "value" of exceptions in the sense as it's defined for
StopIteration.value (i.e. args[0] or None).

TODO: This really should be inline function.
py: Add support for user-defined iterators via __iter__, __next__.
Merge branch 'gen-close-ret-val' of github.com:pfalcon/micropython into pfalcon-gen-close-ret-val
py: Use _is_subclass_fast instead of _exception_match.
Merge branch 'master' of github.com:micropython/micropython
Merge pull request #379 from pfalcon/reraise

vm: Implement raise statement w/o args (reraising last exception).
py: Replace mp_const_stop_iteration object with MP_OBJ_NULL.
py: Swap around the double return value of mp_obj_gen_resume.

Just to keep things consistent :)
Change mp_method_t.name from const char * to qstr.

Addresses issue #377.
py: Support closures with default args.
Remove mp_obj_type_t.methods entry and use .locals_dict instead.

Originally, .methods was used for methods in a ROM class, and
locals_dict for methods in a user-created class.  That distinction is
unnecessary, and we can use locals_dict for ROM classes now that we have
ROMable maps.

This removes an entry in the bloated mp_obj_type_t struct, saving a word
for each ROM object and each RAM object.  ROM objects that have a
methods table (now a locals_dict) need an extra word in total (removed
the methods pointer (1 word), no longer need the sentinel (2 words), but
now need an mp_obj_dict_t wrapper (4 words)).  But RAM objects save a
word because they never used the methods entry.

Overall the ROM usage is down by a few hundred bytes, and RAM usage is
down 1 word per user-defined type/class.

There is less code (no need to check 2 tables), and now consistent with
the way ROM modules have their tables initialised.

Efficiency is very close to equivaluent.
py: Implement getattr() builtin.
py: Improved builtin dir.
py: Fix logic bugs in object attribute/method extraction.
stmhal: Remove ExtiMeta object and clean up class constants.
Merge branch 'master' of github.com:micropython/micropython
stmhal: Use rt_check_nargs to check number of arguments.
Merge pull request #381 from pfalcon/closure-defargs

py: Support closures with default args.