Basic implementation of unicode strings handling

This implements basic, but IMHO, mergeable, unicode strings support. Features added beyond initial patchset (#671) are discussed at
https://github.com/micropython/micropython/issues/657#issuecomment-45948197 .

Do you think that we can safely exclude encode and decode methods (with CPYTHON_COMPAT option)?  You can use bytes() and str() instead, but is that the more "Pythonic" way / more used way?

Would it be better to have a different (more descriptive) config option for these methods, eg MICROPY_PY_BUILTINS_STR_ENCODE?