vm: Don't unconditionally allocate state on stack, do that only if needed.

This makes sure that only as much stack allocated as actually used, reducing
stack usage for each Python function call.
vm: Factor out structure with code execution state and pass it around.

This improves stack usage in callers to mp_execute_bytecode2, and is step
forward towards unifying execution interface for function and generators
(which is important because generators don't even support full forms
of arguments passing (keywords, etc.)).
Merge branch 'vm-alloca' of github.com:pfalcon/micropython into pfalcon-vm-alloca

Conflicts:
	py/vm.c

Fixed stack underflow check.  Use UINT_FMT/INT_FMT where necessary.
Specify maximum VM-stack byte size by multiple of machine word size, so
that on 64 bit machines it has same functionality as 32 bit.
Merge branch 'pfalcon-vm-alloca'