py: Check explicitly for memory allocation failure in parser.

Previously, a failed malloc/realloc would throw an exception, which was
not caught.  I think it's better to keep the parser free from NLR
(exception throwing), hence this patch.
py: Add missing dummy functions to pass 1 emitter.
py: Add option to VM to detect stack overflow.
py: Fix VM stack overflow detection.
py: Make sure state/stack of byte code function has at least 1 slot.
py, compiler: Improve stack depth counting.

Much less of a hack now.  Hopefully it's correct!
py: Simplify stack get/set to become stack adjust in emitters.

Can do this now that the stack size calculation is improved.
tests: Add test for multi-comparison.
py: Fix float/complex binop returning NULL; implement complex power.
Update .gitignore

Add test failure logs
py: Add simple way of looking up constants in compiler.

Working towards trying to support compile-time constants (see discussion
in issue #227), this patch allows the compiler to look inside arbitrary
uPy objects at compile time.  The objects to search are given by the
macro MICROPY_EXTRA_CONSTANTS (so they must be constant/ROM objects),
and the constant folding occures on forms base.attr (both base and attr
must be id's).

It works, but it breaks strict CPython compatibility, since the lookup
will succeed even without importing the namespace.
stmhal: Add stm module, which contains some constants for the MCU.

Also contains raw memory read/write functions, read8, read16, read32,
write8, write16, write32.  Can now do:

stm.write16(stm.GPIOA + stm.GPIO_BSRRL, 1 << 13)

This turns on the red LED.

With the new constant folding, the above constants for the GPIO address
are actually compiled to constants (and the addition done) at compile
time.  For viper code and inline assembler, this optimisation will make
a big difference.  In the inline assembler, using these constants would
not be possible without this constant folding.
Merge pull request #458 from lurch/patch-1

Tweak pybcdc.inf to match recent changes to pybcdc.h
Merge pull request #460 from lurch/patch-2

Update .gitignore
Update mkrules.mk

make 'make clean' cleaner  ;-)
modstruct: Refactor to support both LE and BE packed structs.
mpconfig.h: Add basic support for target endianness configuration.

A specific target can define either MP_ENDIANNESS_LITTLE or MP_ENDIANNESS_BIG
to 1. Default is MP_ENDIANNESS_LITTLE.

TODO: Autodetect based on compiler predefined macros?
binary: Rename array accessors for clarity.
modstruct: Basic implementation of native struct alignment and types.
modffi: Update for latest binary API refactors.