Strings::substring(): unified behavior when both start and length are negative

behavior of iconv_substr is inconsistent with mb_substr (http://3v4l.org/JvOlj)
Strings::chr(): throws exception for invalid code points (BC break)
Strings::toAscii(): unsupported characters are removed instead of being replaced with '?'
Strings: added tests for few more UTF-8 edge cases
typo
Merge pull request #44 from JanTvrdik/strings_utf8

Strings: added tests for more UTF-8 edge cases