Implemented support for `in` and `not in` operators.
Merge remote-tracking branch 'upstream/master' into containment

Conflicts:
	py/runtime.c
make sets iterable
Implemented set.add
Implemented set.clear
Implemented set.copy
Implemented set.discard
Implemented set.difference and set.difference_update
Implemented set.intersection and set.intersection_update
Implemented set.isdisjoint
Added a hacky implementation for %g
Implemented set.remove
Implemented set.update
Move BITS_PER_BYTE, BITS_PER_WORD to mpconfig.h for reuse.
Add WORD_MSBIT_HIGH define - machine_int_t with the highest bit set.
Add proper checks for fits-in-small-int. Make it reusable.

We likely should make mp_obj_new_int() inline, and rely on its
encapsulated check rather than inline checks everywhere explicitly.

Also, parser for big small int values is still broken.
Parse long Python ints properly.

Long int is something which doesn't fit into SMALL_INT partion of
machine_int_t. But it's also something which doesn't fit into
machine_int_t in the first place.
Add framework to support alternative implementations of long int Python type.
Implement a basic str.find; fixes #67
Implemented set binary ops.