Fix phutil_is_utf8_with_only_bmp_characters() for partial valid characters
Summary:
We don't get partial 2-byte and 3-byte UTF8 characters quite correct, fataling instead of returning false because we access past the end of the string.
Instead, bail early if we run off the end of the string without seeing any issues.
Test Plan: Added and executed unit tests.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Differential Revision: https://secure.phabricator.com/D8321