py: the entire `<unistd.h>` shouldn't be needed
pip-micropython: Apply more workarounds for setuptools, pip, etc misfeatures.
unix: Enable modffi by default.

ffi is needed to use micropython-lib, so let's have it enabled by default,
then folks who have troubles with libffi can disable it, instead of everyone
doing manual actions again and again.
py: Big improvements to inline assembler.

Improved the Thumb assembler back end.  Added many more Thumb
instructions to the inline assembler.  Improved parsing of assembler
instructions and arguments.  Assembler functions can now be passed the
address of any object that supports the buffer protocol (to get the
address of the buffer).  Added an example of how to sum numbers from
an array in assembler.
Merge branch 'master' of github.com:micropython/micropython
Merge pull request #472 from pfalcon/modffi-on

unix: Enable modffi by default.
objlist: Make .extend accept arbitrary iterable.
objstr: Add str.encode() and bytes.decode() methods.

These largely duplicate str() & bytes() constructors' functionality,
but can be used to achieve Python2 compatibility.
py: Make bytes type hashable.
objlist: Add support for statically allocated lists.

Similar to similar support for lists.
py, unix: Convert sys module to static representation.
py: Move sys attribute qstrs's to core.
stmhal: Update for static mod sys.
README: Update for modffi being enabled by default for unix port.
py: Rename collections module to _collections.

We're not going to implement all the plethora of types in there in C.
Funnily, CPython implements defaultdict in C, and namedtuple in Python.
py: Provide more details for too few and too much args for Python fun calls.
objset: Implement __contains__() op-method.
py: Factor out impl of special methods for builtin types into opmethods.c
py: Remove unique_codes from emitglue.c.  Replace with pointers.

Attempt to address issue #386.  unique_code_id's have been removed and
replaced with a pointer to the "raw code" information.  This pointer is
stored in the actual byte code (aligned, so the GC can trace it), so
that raw code (ie byte code, native code and inline assembler) is kept
only for as long as it is needed.  In memory it's now like a tree: the
outer module's byte code points directly to its children's raw code.  So
when the outer code gets freed, if there are no remaining functions that
need the raw code, then the children's code gets freed as well.

This is pretty much like CPython does it, except that CPython stores
indexes in the byte code rather than machine pointers.  These indices
index the per-function constant table in order to find the relevant
code.
stmhal: Little hack to dump GC allocation table using pyb.info().

Pass a single parameter (doesn't matter what): pyb.info(1), will dump
the GC alloc table.