to_lower_default & to_upper_default for unicode chars and strings.

Case changing methods implemented for Unicode chars and strings.
These use the default Unicode case folding, which works for almost all languages (except "tr" and "az").
This does the wrong thing for the Turkish family of languages, and so a proper to_{upper, lower} should be implemented to take a locale (or check the current locale) and make the appropriate choices. 

TODO: implement to_{lower,upper} to use locale.