objstr: Make sure that bytes are indexed as bytes, not as unicode.

Fixes #795.
py, modcmath: Fix doc comment, and add some more of them.
py, objstr: Optimise bytes subscr when unicode is enabled.

Saves code bytes and makes it faster, so why not?
py: Make a function static; replace NULL with MP_OBJ_NULL.
py: Implement builtin reversed() function.

reversed function now implemented, and works for tuple, list, str, bytes
and user objects with __len__ and __getitem__.

Renamed mp_builtin_len to mp_obj_len to make it publically available (eg
for reversed).
py: Improve range: add len, subscr, proper print.

Can now index ranges with integers and slices, and reverse ranges
(although reversing is not very efficient).

Not sure how useful this stuff is, but gets us closer to having all of
Python's builtins.
py: Add .real and .imag attributes to complex numbers.
stmhal: Enable moductypes by default.

Also fixes compiler error in moductypes when compiled without debugging.

Addresses issue #778.
py: #if guard qstrs that are optional.

Also disable gc module on bare-arm port.
modzlibd: Decompress part of "zlib" module, based on miniz tinfl.c .
modzlibd: Add tinfl.c from miniz SVN repo, r63.

The only change is line-ending convesion to LF.
tests: Add test for zlibd module.
extmod: Finish rename of zlib to zlibd; enable zlibd on stmhal.
Merge branch 'pfalcon-modzlibd'
msvc: Use built-in alignof

This also fixes a 'unnamed type definition in parentheses' warning on the
alignof implementation define in binary.c
py: Fix mult by negative number of tuple, list, str, bytes.

Multiplication of a tuple, list, str or bytes now yields an empty
sequence (instead of crashing).  Addresses issue #799

Also added ability to mult bytes on LHS by integer.
Merge pull request #798 from stinos/msvc-alignof

msvc: Use built-in alignof
stmhal: Resolve question in comment about timer clock.
py: Clean up and simplify functions in scope; add STATIC in compiler.

Some small code clean-ups that result in about 80 bytes ROM saving for
stmhal.
py: Allow viper to have type annotations.

Viper functions can now be annotated with the type of their arguments
and return value.  Eg:

@micropython.viper
def f(x:int) -> int:
    return x + 1