Draft approach towards resolving https://github.com/micropython/micropython/issues/560#issuecomment-42213955
py: Initial attempts to actually allow implementing __new__ in Python.

Caveat is that __new__ should recurse to base class __new__, and ultimately,
object.__new__ is what handles instance allocation.
unix modsocket: Make .makefile() method more compliant.

.makefile() should allow to specify which stream time to create - byte
or text.
objstr: Implement .endswith().
modsocket: 64-bit cleanness.
Rename configuration variables controling Python features.

Now of the form MICROPY_PY_*.  See issue #35.
Add SystemExit exception and use it in unix/ and stmhal/ ports.

Addresses issue #598.
objslice: Support arbitrary objects start, stop, and step.

Older int-only encoding is not expressive enough to support arbitrary slice
assignment operations.
py: Handle case of slice start > stop in common sequence function.
objlist: Implement growing slice assignment.

This means that complete slice operations are supported for lists (but not
for bytearray's and array.array's).
sequence: Throw exception for not implemented slice steps.
Merge branch 'keep-strings-uninterned' of github.com:pfalcon/micropython into pfalcon-keep-strings-uninterned

Conflicts:
	py/parse.c
py: Refactor slice helpers, preparing to support arbitrary slicing.
objlist: Implement support for arbitrary (3-arg) slices.
py: Don't automatically intern strings in parser.

This completes non-automatic interning of strings in the parser, so that
doc strings don't take up RAM.  It complicates the parser and compiler,
and bloats stmhal by about 300 bytes.  It's complicated because now
there are 2 kinds of parse-nodes that can be strings: interned leaves
and non-interned structs.
Merge branch 'pfalcon-keep-strings-uninterned'
Change const byte* to const char* where sensible.

This removes need for some casts (at least, more than it adds need
for new casts!).
py: Slightly improve efficiency of mp_obj_new_str; rename str_new.

Reorder interning logic in mp_obj_new_str, to be more efficient.

str_new is globally accessible, so should be prefixed with mp_obj_.
py, vm: Where possible, make variables local to each opcode.

This helps the compiler do its optimisation, makes it clear which
variables are local per opcode and which global, and makes it consistent
when extra variables are needed in an opcode (in addition to old obj1,
obj2 pair, for example).

Could also make unum local, but that's for another time.
tests: Add small testcase for 3-arg slices.