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

No ;-(

> You can use bytes() and str() instead, but is that the more "Pythonic" way / more used way?

So, converting via encoding arg to constructors is Py3-only feature, and so nobody uses it (well, I never saw a case so far), whereas .encode()/.decode() are well known Py2 methods.

> Would it be better to have a different (more descriptive) config option for these methods, eg MICROPY_PY_BUILTINS_STR_ENCODE?

Yes, now that we have good config scheme, makes sense to do that. But that's not exactly unicode-specific, as objstr.c has similar usage.